Compare commits

..

3 commits

Author SHA1 Message Date
f64f8a43a6
fix: command line format for showing followers
CHANGES:

- When viewing followers and followings from an account, the from flag
  must now be set by the user.
    - enbas show --type followers --from account --my-account
    - enbas show --type following --from account --account-name john

- New error type for unsupported show operations: Return an error if
  enbas detects an unsupported show operation (e.g. showing media from a
  list).
2024-07-03 14:20:25 +01:00
a8aeec2fbf
fix: update description for the vote flag 2024-07-03 13:34:27 +01:00
5ec1cc0e18
fix: rename the choose flag.
Rename to choose flag to vote for voting in polls.
2024-07-03 13:21:32 +01:00
4 changed files with 60 additions and 4 deletions

View file

@ -47,7 +47,7 @@ func NewAddExecutor(printer *printer.Printer, config *config.Config, name, summa
addExe.StringVar(&addExe.content, flagContent, "", "The content of the resource") addExe.StringVar(&addExe.content, flagContent, "", "The content of the resource")
addExe.StringVar(&addExe.pollID, flagPollID, "", "The ID of the poll") addExe.StringVar(&addExe.pollID, flagPollID, "", "The ID of the poll")
addExe.Var(&addExe.accountNames, flagAccountName, "The name of the account") addExe.Var(&addExe.accountNames, flagAccountName, "The name of the account")
addExe.Var(&addExe.choices, flagChoose, "Specify your choice ") addExe.Var(&addExe.choices, flagVote, "Add a vote to an option in a poll")
addExe.Usage = commandUsageFunc(name, summary, addExe.FlagSet) addExe.Usage = commandUsageFunc(name, summary, addExe.FlagSet)
@ -270,7 +270,7 @@ func (a *AddExecutor) addToPoll(gtsClient *client.Client) error {
func (a *AddExecutor) addVoteToPoll(gtsClient *client.Client) error { func (a *AddExecutor) addVoteToPoll(gtsClient *client.Client) error {
if len(a.choices) == 0 { if len(a.choices) == 0 {
return errors.New("please use --" + flagChoose + " to make a choice in this poll") return errors.New("please use --" + flagVote + " to make a choice in this poll")
} }
poll, err := gtsClient.GetPoll(a.pollID) poll, err := gtsClient.GetPoll(a.pollID)

View file

@ -52,6 +52,19 @@ func (e UnsupportedRemoveOperationError) Error() string {
"' is not supported" "' is not supported"
} }
type UnsupportedShowOperationError struct {
ResourceType string
ShowFromResourceType string
}
func (e UnsupportedShowOperationError) Error() string {
return "showing '" +
e.ResourceType +
"' from '" +
e.ShowFromResourceType +
"' is not supported"
}
type EmptyContentError struct { type EmptyContentError struct {
ResourceType string ResourceType string
Hint string Hint string

View file

@ -16,7 +16,6 @@ const (
flagAccountName = "account-name" flagAccountName = "account-name"
flagAttachmentID = "attachment-id" flagAttachmentID = "attachment-id"
flagBrowser = "browser" flagBrowser = "browser"
flagChoose = "choose"
flagContentType = "content-type" flagContentType = "content-type"
flagContent = "content" flagContent = "content"
flagEnableFederation = "enable-federation" flagEnableFederation = "enable-federation"
@ -52,6 +51,7 @@ const (
flagTo = "to" flagTo = "to"
flagType = "type" flagType = "type"
flagVisibility = "visibility" flagVisibility = "visibility"
flagVote = "vote"
) )
type MultiStringFlagValue []string type MultiStringFlagValue []string

View file

@ -287,6 +287,26 @@ func (s *ShowExecutor) showLists(gtsClient *client.Client) error {
} }
func (s *ShowExecutor) showFollowers(gtsClient *client.Client) error { func (s *ShowExecutor) showFollowers(gtsClient *client.Client) error {
if s.fromResourceType == "" {
return FlagNotSetError{flagText: flagFrom}
}
funcMap := map[string]func(*client.Client) error{
resourceAccount: s.showFollowersFromAccount,
}
doFunc, ok := funcMap[s.fromResourceType]
if !ok {
return UnsupportedShowOperationError{
ResourceType: s.resourceType,
ShowFromResourceType: s.fromResourceType,
}
}
return doFunc(gtsClient)
}
func (s *ShowExecutor) showFollowersFromAccount(gtsClient *client.Client) error {
accountID, err := getAccountID(gtsClient, s.myAccount, s.accountName, s.config.CredentialsFile) accountID, err := getAccountID(gtsClient, s.myAccount, s.accountName, s.config.CredentialsFile)
if err != nil { if err != nil {
return fmt.Errorf("received an error while getting the account ID: %w", err) return fmt.Errorf("received an error while getting the account ID: %w", err)
@ -307,6 +327,26 @@ func (s *ShowExecutor) showFollowers(gtsClient *client.Client) error {
} }
func (s *ShowExecutor) showFollowing(gtsClient *client.Client) error { func (s *ShowExecutor) showFollowing(gtsClient *client.Client) error {
if s.fromResourceType == "" {
return FlagNotSetError{flagText: flagFrom}
}
funcMap := map[string]func(*client.Client) error{
resourceAccount: s.showFollowingFromAccount,
}
doFunc, ok := funcMap[s.fromResourceType]
if !ok {
return UnsupportedShowOperationError{
ResourceType: s.resourceType,
ShowFromResourceType: s.fromResourceType,
}
}
return doFunc(gtsClient)
}
func (s *ShowExecutor) showFollowingFromAccount(gtsClient *client.Client) error {
accountID, err := getAccountID(gtsClient, s.myAccount, s.accountName, s.config.CredentialsFile) accountID, err := getAccountID(gtsClient, s.myAccount, s.accountName, s.config.CredentialsFile)
if err != nil { if err != nil {
return fmt.Errorf("received an error while getting the account ID: %w", err) return fmt.Errorf("received an error while getting the account ID: %w", err)
@ -449,7 +489,10 @@ func (s *ShowExecutor) showMedia(gtsClient *client.Client) error {
doFunc, ok := funcMap[s.fromResourceType] doFunc, ok := funcMap[s.fromResourceType]
if !ok { if !ok {
return fmt.Errorf("do not support viewing media from %s", s.fromResourceType) return UnsupportedShowOperationError{
ResourceType: s.resourceType,
ShowFromResourceType: s.fromResourceType,
}
} }
return doFunc(gtsClient) return doFunc(gtsClient)