Allow arguments as channel uid or channel name
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Peter Stuifzand 2021-10-20 20:21:23 +02:00
parent aa7fa2fe9d
commit 39e08e6026
Signed by: peter
GPG Key ID: 374322D56E5209E8

View File

@ -218,6 +218,26 @@ Global arguments:
performCommands(&c, flag.Args()) performCommands(&c, flag.Args())
} }
func channelID(sub microsub.Microsub, channelNameOrID string) (string, error) {
channels, err := sub.ChannelsGetList()
if err != nil {
// we encountered an error, so we are not sure if it worked
return channelNameOrID, err
}
for _, c := range channels {
if c.Name == channelNameOrID {
return c.UID, nil
}
if c.UID == channelNameOrID {
return c.UID, nil
}
}
// unknown?
return channelNameOrID, nil
}
func performCommands(sub microsub.Microsub, commands []string) { func performCommands(sub microsub.Microsub, commands []string) {
if len(commands) == 0 { if len(commands) == 0 {
flag.Usage() flag.Usage()
@ -245,15 +265,15 @@ func performCommands(sub microsub.Microsub, commands []string) {
} }
if len(commands) == 3 && commands[0] == "channels" { if len(commands) == 3 && commands[0] == "channels" {
uid := commands[1] if commands[1] == "-delete" {
if uid == "-delete" { uid, _ := channelID(sub, commands[2])
uid = commands[2]
err := sub.ChannelsDelete(uid) err := sub.ChannelsDelete(uid)
if err != nil { if err != nil {
log.Fatalf("An error occurred: %s\n", err) log.Fatalf("An error occurred: %s\n", err)
} }
fmt.Printf("Channel %s deleted\n", uid) fmt.Printf("Channel %s deleted\n", uid)
} else { } else {
uid, _ := channelID(sub, commands[1])
name := commands[2] name := commands[2]
channel, err := sub.ChannelsUpdate(uid, name) channel, err := sub.ChannelsUpdate(uid, name)
if err != nil { if err != nil {
@ -264,7 +284,7 @@ func performCommands(sub microsub.Microsub, commands []string) {
} }
if len(commands) >= 2 && commands[0] == "timeline" { if len(commands) >= 2 && commands[0] == "timeline" {
channel := commands[1] channel, _ := channelID(sub, commands[1])
var timeline microsub.Timeline var timeline microsub.Timeline
var err error var err error
@ -304,7 +324,7 @@ func performCommands(sub microsub.Microsub, commands []string) {
query := commands[1] query := commands[1]
var channel string var channel string
if len(commands) == 3 { if len(commands) == 3 {
channel = commands[2] channel, _ = channelID(sub, commands[2])
} else { } else {
channel = "global" channel = "global"
} }
@ -342,7 +362,7 @@ func performCommands(sub microsub.Microsub, commands []string) {
} }
if len(commands) == 3 && commands[0] == "follow" { if len(commands) == 3 && commands[0] == "follow" {
uid := commands[1] uid, _ := channelID(sub, commands[1])
u := commands[2] u := commands[2]
_, err := sub.FollowURL(uid, u) _, err := sub.FollowURL(uid, u)
if err != nil { if err != nil {
@ -352,7 +372,7 @@ func performCommands(sub microsub.Microsub, commands []string) {
} }
if len(commands) == 3 && commands[0] == "unfollow" { if len(commands) == 3 && commands[0] == "unfollow" {
uid := commands[1] uid, _ := channelID(sub, commands[1])
u := commands[2] u := commands[2]
err := sub.UnfollowURL(uid, u) err := sub.UnfollowURL(uid, u)
if err != nil { if err != nil {