cmd/accounts.go
author Mikael Berthe <mikael@lilotux.net>
Sat, 04 Feb 2023 13:35:58 +0100
changeset 271 c8b8b7cc8896
parent 268 4dd196a4ee7c
permissions -rw-r--r--
Remove deprecated flag (`--unset`)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
265
05c40b36d3b2 Bump to version 3.0.0-dev, using madon v3
Mikael Berthe <mikael@lilotux.net>
parents: 239
diff changeset
     1
// Copyright © 2017-2023 Mikael Berthe <mikael@lilotux.net>
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
//
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
// Licensed under the MIT license.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
// Please see the LICENSE file is this directory.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
package cmd
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
import (
16
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
     9
	"os"
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
    10
	"strconv"
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
	"strings"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
45
b58a7ea1aeb2 Use github.com/pkg/errors
Mikael Berthe <mikael@lilotux.net>
parents: 44
diff changeset
    13
	"github.com/pkg/errors"
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
	"github.com/spf13/cobra"
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    15
	flag "github.com/spf13/pflag"
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
265
05c40b36d3b2 Bump to version 3.0.0-dev, using madon v3
Mikael Berthe <mikael@lilotux.net>
parents: 239
diff changeset
    17
	"github.com/McKael/madon/v3"
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
205
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
    20
var accountUpdateFlags, accountMuteFlags, accountFollowFlags *flag.FlagSet
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
    21
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
var accountsOpts struct {
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    23
	accountID             madon.ActivityID
180
9bcc6dc003fd Add '--pinned' flag to madonctl account statuses
Mikael Berthe <mikael@lilotux.net>
parents: 178
diff changeset
    24
	accountUID            string
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    25
	limit, keep           uint             // Limit the results
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    26
	sinceID, maxID        madon.ActivityID // Query boundaries
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    27
	all                   bool             // Try to fetch all results
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    28
	onlyMedia, onlyPinned bool             // For acccount statuses
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    29
	excludeReplies        bool             // For acccount statuses
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    30
	remoteUID             string           // For account follow
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    31
	reblogs               bool             // For account follow
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    32
	acceptFR, rejectFR    bool             // For account follow_requests
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    33
	list                  bool             // For account follow_requests/reports
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    34
	accountIDs            string           // For account relationships
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    35
	statusIDs             string           // For account reports
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    36
	comment               string           // For account reports
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    37
	displayName, note     string           // For account update
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    38
	profileFields         []string         // For account update
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    39
	avatar, header        string           // For account update
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    40
	defaultLanguage       string           // For account update
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    41
	defaultPrivacy        string           // For account update
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    42
	defaultSensitive      bool             // For account update
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    43
	locked, bot           bool             // For account update
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    44
	muteNotifications     bool             // For account mute
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    45
	following             bool             // For account search
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    47
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    48
func init() {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
	RootCmd.AddCommand(accountsCmd)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    50
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
	// Subcommands
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    52
	accountsCmd.AddCommand(accountSubcommands...)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
	// Global flags
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    55
	accountsCmd.PersistentFlags().StringVarP(&accountsOpts.accountID, "account-id", "a", "", "Account ID number")
16
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
    56
	accountsCmd.PersistentFlags().StringVarP(&accountsOpts.accountUID, "user-id", "u", "", "Account user ID")
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
    57
	accountsCmd.PersistentFlags().UintVarP(&accountsOpts.limit, "limit", "l", 0, "Limit number of API results")
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
    58
	accountsCmd.PersistentFlags().UintVarP(&accountsOpts.keep, "keep", "k", 0, "Limit number of results")
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    59
	accountsCmd.PersistentFlags().StringVar(&accountsOpts.sinceID, "since-id", "", "Request IDs greater than a value")
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
    60
	accountsCmd.PersistentFlags().StringVar(&accountsOpts.maxID, "max-id", "", "Request IDs less (or equal) than a value")
30
14561d44211b Add option --all to fetch all available results
Mikael Berthe <mikael@lilotux.net>
parents: 29
diff changeset
    61
	accountsCmd.PersistentFlags().BoolVar(&accountsOpts.all, "all", false, "Fetch all results")
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
	// Subcommand flags
180
9bcc6dc003fd Add '--pinned' flag to madonctl account statuses
Mikael Berthe <mikael@lilotux.net>
parents: 178
diff changeset
    64
	accountStatusesSubcommand.Flags().BoolVar(&accountsOpts.onlyPinned, "pinned", false, "Only statuses that have been pinned")
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    65
	accountStatusesSubcommand.Flags().BoolVar(&accountsOpts.onlyMedia, "only-media", false, "Only statuses with media attachments")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    66
	accountStatusesSubcommand.Flags().BoolVar(&accountsOpts.excludeReplies, "exclude-replies", false, "Exclude replies to other statuses")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    67
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    68
	accountFollowRequestsSubcommand.Flags().BoolVar(&accountsOpts.list, "list", false, "List pending follow requests")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    69
	accountFollowRequestsSubcommand.Flags().BoolVar(&accountsOpts.acceptFR, "accept", false, "Accept the follow request from the account ID")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    70
	accountFollowRequestsSubcommand.Flags().BoolVar(&accountsOpts.rejectFR, "reject", false, "Reject the follow request from the account ID")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    71
182
842f6cea448f madonctl accounts mute: Add '--notifications' flag
Mikael Berthe <mikael@lilotux.net>
parents: 180
diff changeset
    72
	accountMuteSubcommand.Flags().BoolVarP(&accountsOpts.muteNotifications, "notifications", "", true, "Mute the notifications")
205
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
    73
	accountFollowSubcommand.Flags().BoolVarP(&accountsOpts.reblogs, "show-reblogs", "", true, "Follow account's boosts")
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    74
	accountFollowSubcommand.Flags().StringVarP(&accountsOpts.remoteUID, "remote", "r", "", "Follow remote account (user@domain)")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    75
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    76
	accountRelationshipsSubcommand.Flags().StringVar(&accountsOpts.accountIDs, "account-ids", "", "Comma-separated list of account IDs")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    77
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    78
	accountReportsSubcommand.Flags().StringVar(&accountsOpts.statusIDs, "status-ids", "", "Comma-separated list of status IDs")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    79
	accountReportsSubcommand.Flags().StringVar(&accountsOpts.comment, "comment", "", "Report comment")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    80
	accountReportsSubcommand.Flags().BoolVar(&accountsOpts.list, "list", false, "List current user reports")
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    81
184
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
    82
	accountSearchSubcommand.Flags().BoolVar(&accountsOpts.following, "following", false, "Restrict search to accounts you are following")
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
    83
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    84
	accountUpdateSubcommand.Flags().StringVar(&accountsOpts.displayName, "display-name", "", "User display name")
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    85
	accountUpdateSubcommand.Flags().StringVar(&accountsOpts.note, "note", "", "User note (a.k.a. bio)")
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    86
	accountUpdateSubcommand.Flags().StringVar(&accountsOpts.avatar, "avatar", "", "User avatar image")
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    87
	accountUpdateSubcommand.Flags().StringVar(&accountsOpts.header, "header", "", "User header image")
224
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
    88
	accountUpdateSubcommand.Flags().StringArrayVar(&accountsOpts.profileFields, "profile-field", nil, "Profile metadata field (NAME=VALUE)")
223
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
    89
	accountUpdateSubcommand.Flags().StringVar(&accountsOpts.defaultLanguage, "default-language", "", "Default toots language (iso 639 code)")
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
    90
	accountUpdateSubcommand.Flags().StringVar(&accountsOpts.defaultPrivacy, "default-privacy", "", "Default toot privacy (public, unlisted, private)")
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
    91
	accountUpdateSubcommand.Flags().BoolVar(&accountsOpts.defaultSensitive, "default-sensitive", false, "Mark medias as sensitive by default")
178
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
    92
	accountUpdateSubcommand.Flags().BoolVar(&accountsOpts.locked, "locked", false, "Following account requires approval")
222
e93d9c738273 Add '--bot' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 220
diff changeset
    93
	accountUpdateSubcommand.Flags().BoolVar(&accountsOpts.bot, "bot", false, "Set as service (automated) account")
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    94
205
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
    95
	// Those variables will be used to check if the options were
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
    96
	// explicitly set or not
178
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
    97
	accountUpdateFlags = accountUpdateSubcommand.Flags()
182
842f6cea448f madonctl accounts mute: Add '--notifications' flag
Mikael Berthe <mikael@lilotux.net>
parents: 180
diff changeset
    98
	accountMuteFlags = accountMuteSubcommand.Flags()
205
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
    99
	accountFollowFlags = accountFollowSubcommand.Flags()
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   100
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   101
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   102
// accountsCmd represents the accounts command
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   103
// This command does nothing without a subcommand
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   104
var accountsCmd = &cobra.Command{
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   105
	Use:     "account [--account-id ID] subcommand",
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   106
	Aliases: []string{"accounts"},
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   107
	Short:   "Account-related functions",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   108
	//Long:    `TBW...`, // TODO
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   109
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   110
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   111
// Note: Some account subcommands are not defined in this file.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   112
var accountSubcommands = []*cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   113
	&cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   114
		Use: "show",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   115
		Long: `Displays the details about the requested account.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   116
If no account ID is specified, the current user account is used.`,
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   117
		Aliases: []string{"display"},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   118
		Short:   "Display the account",
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   119
		Example: `  madonctl account show   # Display your own account
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   120
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   121
  madonctl account show --account-id 1234
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   122
  madonctl account show --user-id Gargron@mastodon.social
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   123
  madonctl account show --user-id https://mastodon.social/@Gargron
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   124
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   125
  madonctl account show 1234
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   126
  madonctl account show Gargron@mastodon.social
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   127
  madonctl account show https://mastodon.social/@Gargron
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   128
`,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   129
		RunE: func(cmd *cobra.Command, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   130
			return accountSubcommandsRunE(cmd.Name(), args)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   131
		},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   132
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   133
	&cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   134
		Use:   "followers",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   135
		Short: "Display the accounts following the specified account",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   136
		RunE: func(cmd *cobra.Command, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   137
			return accountSubcommandsRunE(cmd.Name(), args)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   138
		},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   139
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   140
	&cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   141
		Use:   "following",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   142
		Short: "Display the accounts followed by the specified account",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   143
		RunE: func(cmd *cobra.Command, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   144
			return accountSubcommandsRunE(cmd.Name(), args)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   145
		},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   146
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   147
	&cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   148
		Use:     "favourites",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   149
		Aliases: []string{"favorites", "favourited", "favorited"},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   150
		Short:   "Display the user's favourites",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   151
		RunE: func(cmd *cobra.Command, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   152
			return accountSubcommandsRunE(cmd.Name(), args)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   153
		},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   154
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   155
	&cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   156
		Use:     "blocks",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   157
		Aliases: []string{"blocked"},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   158
		Short:   "Display the user's blocked accounts",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   159
		RunE: func(cmd *cobra.Command, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   160
			return accountSubcommandsRunE(cmd.Name(), args)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   161
		},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   162
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   163
	&cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   164
		Use:     "mutes",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   165
		Aliases: []string{"muted"},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   166
		Short:   "Display the user's muted accounts",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   167
		RunE: func(cmd *cobra.Command, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   168
			return accountSubcommandsRunE(cmd.Name(), args)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   169
		},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   170
	},
184
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   171
	accountSearchSubcommand,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   172
	accountStatusesSubcommand,
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   173
	accountFollowRequestsSubcommand,
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   174
	accountFollowSubcommand,
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   175
	accountUnfollowSubcommand,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   176
	accountBlockSubcommand,
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   177
	accountUnblockSubcommand,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   178
	accountMuteSubcommand,
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   179
	accountUnmuteSubcommand,
226
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   180
	accountPinSubcommand,
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   181
	accountUnpinSubcommand,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   182
	accountRelationshipsSubcommand,
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   183
	accountReportsSubcommand,
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   184
	accountUpdateSubcommand,
226
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   185
	accountListEndorsementsSubcommand,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   186
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   187
184
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   188
var accountSearchSubcommand = &cobra.Command{
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   189
	Use:   "search TEXT",
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   190
	Short: "Search for user accounts",
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   191
	Long: `Search for user accounts.
196
05861d22b71e Fix help for account search
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   192
05861d22b71e Fix help for account search
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   193
This command will lookup an account remotely if the search term is in the
05861d22b71e Fix help for account search
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
   194
@domain format and not yet known to the server.`,
184
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   195
	RunE: func(cmd *cobra.Command, args []string) error {
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   196
		return accountSubcommandsRunE(cmd.Name(), args)
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   197
	},
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   198
}
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   199
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   200
var accountStatusesSubcommand = &cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   201
	Use:     "statuses",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   202
	Aliases: []string{"st"},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   203
	Short:   "Display the account statuses",
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   204
	Example: `  madonctl account statuses
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   205
  madonctl account statuses 404                         # local account numeric ID
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   206
  madonctl account statuses @McKael                     # local account
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   207
  madonctl account statuses Gargron@mastodon.social     # remote (known account)
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   208
  madonctl account statuses https://mastodon.social/@Gargron  # any account URL
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   209
`,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   210
	RunE: func(cmd *cobra.Command, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   211
		return accountSubcommandsRunE(cmd.Name(), args)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   212
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   213
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   214
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   215
var accountFollowRequestsSubcommand = &cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   216
	Use:     "follow-requests",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   217
	Aliases: []string{"follow-request", "fr"},
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   218
	Short:   "List, accept or deny a follow request",
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   219
	Example: `  madonctl account follow-requests --list
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   220
  madonctl account follow-requests --account-id X --accept
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   221
  madonctl account follow-requests --account-id Y --reject`,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   222
	RunE: func(cmd *cobra.Command, args []string) error {
12
e94c9ed9b1c8 Use cmd.Name() in cobra commands
Mikael Berthe <mikael@lilotux.net>
parents: 6
diff changeset
   223
		return accountSubcommandsRunE(cmd.Name(), args)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   224
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   225
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   226
var accountFollowSubcommand = &cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   227
	Use:   "follow",
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   228
	Short: "Follow an account",
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   229
	Example: `# Argument type can be set explicitly:
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   230
  madonctl account follow --account-id 1234
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   231
  madonctl account follow --remote Gargron@mastodon.social
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   232
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   233
# Or argument type can be guessed:
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   234
  madonctl account follow 4800
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   235
  madonctl account follow Gargron@mastodon.social --show-reblogs=false
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   236
  madonctl account follow https://mastodon.social/@Gargron
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   237
`,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   238
	RunE: func(cmd *cobra.Command, args []string) error {
12
e94c9ed9b1c8 Use cmd.Name() in cobra commands
Mikael Berthe <mikael@lilotux.net>
parents: 6
diff changeset
   239
		return accountSubcommandsRunE(cmd.Name(), args)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   240
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   241
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   242
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   243
var accountUnfollowSubcommand = &cobra.Command{
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   244
	Use:   "unfollow",
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   245
	Short: "Stop following an account",
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   246
	Example: `  madonctl account unfollow --account-id 1234
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   247
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   248
Same usage as madonctl follow.
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   249
`,
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   250
	RunE: func(cmd *cobra.Command, args []string) error {
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   251
		return accountSubcommandsRunE(cmd.Name(), args)
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   252
	},
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   253
}
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   254
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   255
var accountBlockSubcommand = &cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   256
	Use:   "block",
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   257
	Short: "Block the account",
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   258
	RunE: func(cmd *cobra.Command, args []string) error {
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   259
		return accountSubcommandsRunE(cmd.Name(), args)
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   260
	},
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   261
}
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   262
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   263
var accountUnblockSubcommand = &cobra.Command{
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   264
	Use:   "unblock",
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   265
	Short: "Unblock the account",
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   266
	RunE: func(cmd *cobra.Command, args []string) error {
12
e94c9ed9b1c8 Use cmd.Name() in cobra commands
Mikael Berthe <mikael@lilotux.net>
parents: 6
diff changeset
   267
		return accountSubcommandsRunE(cmd.Name(), args)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   268
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   269
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   270
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   271
var accountMuteSubcommand = &cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   272
	Use:   "mute",
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   273
	Short: "Mute the account",
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   274
	RunE: func(cmd *cobra.Command, args []string) error {
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   275
		return accountSubcommandsRunE(cmd.Name(), args)
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   276
	},
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   277
}
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   278
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   279
var accountUnmuteSubcommand = &cobra.Command{
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   280
	Use:   "unmute",
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   281
	Short: "Unmute the account",
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   282
	RunE: func(cmd *cobra.Command, args []string) error {
12
e94c9ed9b1c8 Use cmd.Name() in cobra commands
Mikael Berthe <mikael@lilotux.net>
parents: 6
diff changeset
   283
		return accountSubcommandsRunE(cmd.Name(), args)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   284
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   285
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   286
226
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   287
var accountPinSubcommand = &cobra.Command{
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   288
	Use:     "pin",
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   289
	Short:   "Endorse (pin) the account",
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   290
	Aliases: []string{"endorse"},
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   291
	RunE: func(cmd *cobra.Command, args []string) error {
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   292
		return accountSubcommandsRunE(cmd.Name(), args)
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   293
	},
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   294
}
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   295
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   296
var accountUnpinSubcommand = &cobra.Command{
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   297
	Use:     "unpin",
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   298
	Short:   "Cancel endorsement of an account",
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   299
	Aliases: []string{"disavow"},
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   300
	RunE: func(cmd *cobra.Command, args []string) error {
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   301
		return accountSubcommandsRunE(cmd.Name(), args)
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   302
	},
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   303
}
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   304
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   305
var accountListEndorsementsSubcommand = &cobra.Command{
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   306
	Use:     "pinned",
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   307
	Short:   `Display the list of pinned (endorsed) accounts`,
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   308
	Aliases: []string{"list-endorsements", "get-endorsements"},
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   309
	RunE: func(cmd *cobra.Command, args []string) error {
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   310
		return accountSubcommandsRunE(cmd.Name(), args)
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   311
	},
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   312
}
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   313
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   314
var accountRelationshipsSubcommand = &cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   315
	Use:   "relationships --account-ids ACC1,ACC2...",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   316
	Short: "List relationships with the accounts",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   317
	RunE: func(cmd *cobra.Command, args []string) error {
12
e94c9ed9b1c8 Use cmd.Name() in cobra commands
Mikael Berthe <mikael@lilotux.net>
parents: 6
diff changeset
   318
		return accountSubcommandsRunE(cmd.Name(), args)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   319
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   320
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   321
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   322
var accountReportsSubcommand = &cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   323
	Use:   "reports",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   324
	Short: "List reports or report a user account",
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   325
	Example: `  madonctl account reports --list
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   326
  madonctl account reports --account-id ACCOUNT --status-ids ID... --comment TEXT`,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   327
	RunE: func(cmd *cobra.Command, args []string) error {
12
e94c9ed9b1c8 Use cmd.Name() in cobra commands
Mikael Berthe <mikael@lilotux.net>
parents: 6
diff changeset
   328
		return accountSubcommandsRunE(cmd.Name(), args)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   329
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   330
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   331
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   332
var accountUpdateSubcommand = &cobra.Command{
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   333
	Use:   "update",
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   334
	Short: "Update connected user account",
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   335
	Long: `Update connected user account
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   336
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   337
All flags are optional (set to an empty string if you want to delete a field).
218
49d626ce0b01 account: Update online help wrt --avatar & --header flags
Mikael Berthe <mikael@lilotux.net>
parents: 209
diff changeset
   338
The options --avatar and --header should be paths to image files.
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   339
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   340
Please note the avatar and header images cannot be removed, they can only be
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   341
replaced.`,
209
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   342
	Example: `  madonctl account update --display-name "Mr President"
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   343
  madonctl account update --note "I like madonctl"
3772cc6b3d0a accounts: Use singular form
Mikael Berthe <mikael@lilotux.net>
parents: 208
diff changeset
   344
  madonctl account update --avatar happyface.png`,
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   345
	RunE: func(cmd *cobra.Command, args []string) error {
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   346
		return accountSubcommandsRunE(cmd.Name(), args)
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   347
	},
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   348
}
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   349
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   350
// accountSubcommandsRunE is a generic function for status subcommands
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   351
func accountSubcommandsRunE(subcmd string, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   352
	opt := accountsOpts
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   353
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   354
	if len(args) > 1 {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   355
		return errors.New("too many arguments")
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   356
	}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   357
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   358
	userInArg := false
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   359
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   360
	if len(args) == 1 {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   361
		if len(args[0]) > 0 {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   362
			userInArg = true
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   363
		} else {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   364
			return errors.New("invalid argument (empty)")
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   365
		}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   366
	}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   367
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   368
	// Check account is provided in only one way
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   369
	aCounter := 0
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   370
	if opt.accountID != "" {
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   371
		aCounter++
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   372
	}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   373
	if opt.accountUID != "" {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   374
		aCounter++
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   375
	}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   376
	if opt.remoteUID != "" {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   377
		aCounter++
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   378
	}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   379
	if userInArg {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   380
		aCounter++
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   381
	}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   382
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   383
	if aCounter > 1 {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   384
		return errors.New("too many account identifiers provided")
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   385
	}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   386
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   387
	if userInArg {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   388
		// Is the argument an account ID?
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   389
		if _, err := strconv.ParseInt(args[0], 10, 64); err == nil {
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   390
			opt.accountID = args[0]
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   391
		} else if strings.HasPrefix(args[0], "https://") || strings.HasPrefix(args[0], "http://") {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   392
			// That is not a remote UID scheme
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   393
			opt.accountUID = args[0]
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   394
		} else if subcmd == "follow" {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   395
			// For the follow API, got to be a remote UID...
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   396
			opt.remoteUID = args[0]
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   397
			// ... unless it's local (i.e. no '@' in the identifier)...
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   398
			fid := strings.TrimLeft(args[0], "@")
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   399
			if !strings.ContainsRune(fid, '@') {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   400
				opt.accountUID = args[0]
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   401
				opt.remoteUID = ""
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   402
			}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   403
		} else {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   404
			// Fall back to account UID
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   405
			opt.accountUID = args[0]
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   406
		}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   407
	}
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   408
16
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   409
	if opt.accountUID != "" {
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   410
		if opt.accountID != "" {
16
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   411
			return errors.New("cannot use both account ID and UID")
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   412
		}
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   413
		// Sign in early to look the user id up
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   414
		var err error
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   415
		if err = madonInit(true); err != nil {
16
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   416
			return err
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   417
		}
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   418
		opt.accountID, err = accountLookupUser(opt.accountUID)
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   419
		if err != nil || opt.accountID == "" {
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   420
			if err != nil {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   421
				errPrint("Cannot find user '%s': %v", opt.accountUID, err)
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   422
			} else {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   423
				errPrint("Cannot find user '%s'", opt.accountUID)
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   424
			}
16
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   425
			os.Exit(1)
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   426
		}
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   427
	}
8939959991b3 accounts: add --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
   428
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   429
	switch subcmd {
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   430
	case "show", "search", "update":
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   431
		// These subcommands do not require an account ID
226
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   432
	case "favourites", "blocks", "mutes", "pinned":
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   433
		// Those subcommands can not use an account ID
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   434
		if opt.accountID != "" {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   435
			return errors.New("useless account ID")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   436
		}
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   437
	case "follow", "unfollow":
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   438
		// We need an account ID or a remote UID
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   439
		if opt.accountID == "" && opt.remoteUID == "" {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   440
			return errors.New("missing account ID or URI")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   441
		}
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   442
		if opt.accountID != "" && opt.remoteUID != "" {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   443
			return errors.New("cannot use both account ID and URI")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   444
		}
271
c8b8b7cc8896 Remove deprecated flag (`--unset`)
Mikael Berthe <mikael@lilotux.net>
parents: 268
diff changeset
   445
		if subcmd == "unfollow" && opt.accountID == "" {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   446
			return errors.New("unfollowing requires an account ID")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   447
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   448
	case "follow-requests":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   449
		if opt.list {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   450
			if opt.acceptFR || opt.rejectFR {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   451
				return errors.New("incompatible options")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   452
			}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   453
		} else {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   454
			if !opt.acceptFR && !opt.rejectFR { // No flag
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   455
				return errors.New("missing parameter (--list, --accept or --reject)")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   456
			}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   457
			// This is a FR reply
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   458
			if opt.acceptFR && opt.rejectFR {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   459
				return errors.New("incompatible options")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   460
			}
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   461
			if opt.accountID == "" {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   462
				return errors.New("missing account ID")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   463
			}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   464
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   465
	case "relationships":
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   466
		if opt.accountID == "" && len(opt.accountIDs) == 0 {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   467
			return errors.New("missing account IDs")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   468
		}
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   469
		if opt.accountID != "" && len(opt.accountIDs) > 0 {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   470
			return errors.New("incompatible options")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   471
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   472
	case "reports":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   473
		if opt.list {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   474
			break // No argument needed
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   475
		}
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   476
		if opt.accountID == "" || len(opt.statusIDs) == 0 || opt.comment == "" {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   477
			return errors.New("missing parameter")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   478
		}
28
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   479
	case "followers", "following", "statuses":
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   480
		// If the user's account ID is missing, get it
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   481
		if opt.accountID == "" {
28
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   482
			// Sign in now to look the user id up
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   483
			if err := madonInit(true); err != nil {
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   484
				return err
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   485
			}
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   486
			account, err := gClient.GetCurrentAccount()
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   487
			if err != nil {
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   488
				return err
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   489
			}
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   490
			opt.accountID = account.ID
29
4f12e5d4ef75 Display account ID in verbose mode when it is looked up
Mikael Berthe <mikael@lilotux.net>
parents: 28
diff changeset
   491
			if verbose {
4f12e5d4ef75 Display account ID in verbose mode when it is looked up
Mikael Berthe <mikael@lilotux.net>
parents: 28
diff changeset
   492
				errPrint("User account ID: %d", opt.accountID)
4f12e5d4ef75 Display account ID in verbose mode when it is looked up
Mikael Berthe <mikael@lilotux.net>
parents: 28
diff changeset
   493
			}
28
79aa812c0dd2 Make account ID optional for accounts followers|following|statuses
Mikael Berthe <mikael@lilotux.net>
parents: 22
diff changeset
   494
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   495
	default:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   496
		// The other subcommands here require an account ID
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   497
		if opt.accountID == "" {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   498
			return errors.New("missing account ID")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   499
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   500
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   501
22
5778b09bc6fe Add --since-id and --max-id
Mikael Berthe <mikael@lilotux.net>
parents: 20
diff changeset
   502
	var limOpts *madon.LimitParams
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   503
	if opt.all || opt.limit > 0 || opt.sinceID != "" || opt.maxID != "" {
22
5778b09bc6fe Add --since-id and --max-id
Mikael Berthe <mikael@lilotux.net>
parents: 20
diff changeset
   504
		limOpts = new(madon.LimitParams)
30
14561d44211b Add option --all to fetch all available results
Mikael Berthe <mikael@lilotux.net>
parents: 29
diff changeset
   505
		limOpts.All = opt.all
22
5778b09bc6fe Add --since-id and --max-id
Mikael Berthe <mikael@lilotux.net>
parents: 20
diff changeset
   506
	}
5778b09bc6fe Add --since-id and --max-id
Mikael Berthe <mikael@lilotux.net>
parents: 20
diff changeset
   507
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   508
	if opt.limit > 0 {
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   509
		limOpts.Limit = int(opt.limit)
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   510
	}
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   511
	if opt.maxID != "" {
44
6da40ca4534c Sync with Madon; switch IDs to int64 integers
Mikael Berthe <mikael@lilotux.net>
parents: 30
diff changeset
   512
		limOpts.MaxID = opt.maxID
22
5778b09bc6fe Add --since-id and --max-id
Mikael Berthe <mikael@lilotux.net>
parents: 20
diff changeset
   513
	}
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   514
	if opt.sinceID != "" {
44
6da40ca4534c Sync with Madon; switch IDs to int64 integers
Mikael Berthe <mikael@lilotux.net>
parents: 30
diff changeset
   515
		limOpts.SinceID = opt.sinceID
22
5778b09bc6fe Add --since-id and --max-id
Mikael Berthe <mikael@lilotux.net>
parents: 20
diff changeset
   516
	}
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   517
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   518
	// All account subcommands need to have signed in
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   519
	if err := madonInit(true); err != nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   520
		return err
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   521
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   522
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   523
	var obj interface{}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   524
	var err error
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   525
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   526
	switch subcmd {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   527
	case "show":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   528
		var account *madon.Account
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   529
		if opt.accountID != "" {
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   530
			account, err = gClient.GetAccount(opt.accountID)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   531
		} else {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   532
			account, err = gClient.GetCurrentAccount()
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   533
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   534
		obj = account
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   535
	case "search":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   536
		var accountList []madon.Account
184
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   537
		accountList, err = gClient.SearchAccounts(strings.Join(args, " "), opt.following, limOpts)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   538
		obj = accountList
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   539
	case "followers":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   540
		var accountList []madon.Account
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   541
		accountList, err = gClient.GetAccountFollowers(opt.accountID, limOpts)
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   542
		if opt.keep > 0 && len(accountList) > int(opt.keep) {
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   543
			accountList = accountList[:opt.keep]
13
f862af8faf17 Add option --limit (-l) to limit the number of displayed results
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
   544
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   545
		obj = accountList
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   546
	case "following":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   547
		var accountList []madon.Account
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   548
		accountList, err = gClient.GetAccountFollowing(opt.accountID, limOpts)
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   549
		if opt.keep > 0 && len(accountList) > int(opt.keep) {
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   550
			accountList = accountList[:opt.keep]
13
f862af8faf17 Add option --limit (-l) to limit the number of displayed results
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
   551
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   552
		obj = accountList
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   553
	case "statuses":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   554
		var statusList []madon.Status
180
9bcc6dc003fd Add '--pinned' flag to madonctl account statuses
Mikael Berthe <mikael@lilotux.net>
parents: 178
diff changeset
   555
		statusList, err = gClient.GetAccountStatuses(opt.accountID, opt.onlyPinned, opt.onlyMedia, opt.excludeReplies, limOpts)
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   556
		if opt.keep > 0 && len(statusList) > int(opt.keep) {
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   557
			statusList = statusList[:opt.keep]
13
f862af8faf17 Add option --limit (-l) to limit the number of displayed results
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
   558
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   559
		obj = statusList
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   560
	case "follow", "unfollow":
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   561
		var relationship *madon.Relationship
271
c8b8b7cc8896 Remove deprecated flag (`--unset`)
Mikael Berthe <mikael@lilotux.net>
parents: 268
diff changeset
   562
		if subcmd == "unfollow" {
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   563
			relationship, err = gClient.UnfollowAccount(opt.accountID)
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   564
			obj = relationship
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   565
			break
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   566
		}
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   567
		if opt.accountID == "" {
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   568
			if opt.remoteUID != "" {
205
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
   569
				// Remote account
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   570
				var account *madon.Account
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   571
				account, err = gClient.FollowRemoteAccount(opt.remoteUID)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   572
				obj = account
205
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
   573
				break
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   574
			}
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   575
			return errors.New("error: no usable parameter")
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   576
		}
205
60f4c2acedfd account follow: Add --show-reblogs flag
Mikael Berthe <mikael@lilotux.net>
parents: 196
diff changeset
   577
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   578
		// Locally-known account
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   579
		var followReblogs *bool
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   580
		if accountFollowFlags.Lookup("show-reblogs").Changed {
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   581
			// Set followReblogs as it's been explicitly requested
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   582
			followReblogs = &opt.reblogs
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   583
		}
208
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   584
		relationship, err = gClient.FollowAccount(opt.accountID, followReblogs)
7a830fed2ba3 madonctl account: Try to gues account ID type
Mikael Berthe <mikael@lilotux.net>
parents: 205
diff changeset
   585
		obj = relationship
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   586
	case "follow-requests":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   587
		if opt.list {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   588
			var followRequests []madon.Account
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   589
			followRequests, err = gClient.GetAccountFollowRequests(limOpts)
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   590
			if opt.accountID != "" { // Display a specific request
160
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   591
				var fRequest *madon.Account
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   592
				for _, fr := range followRequests {
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   593
					if fr.ID == opt.accountID {
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   594
						fRequest = &fr
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   595
						break
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   596
					}
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   597
				}
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   598
				if fRequest != nil {
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   599
					followRequests = []madon.Account{*fRequest}
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   600
				} else {
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   601
					followRequests = []madon.Account{}
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   602
				}
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   603
			} else {
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   604
				if opt.keep > 0 && len(followRequests) > int(opt.keep) {
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   605
					followRequests = followRequests[:opt.keep]
160
452865b363fb Allow accounts follow-requests --account-id X --list
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   606
				}
13
f862af8faf17 Add option --limit (-l) to limit the number of displayed results
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
   607
			}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   608
			obj = followRequests
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   609
		} else {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   610
			err = gClient.FollowRequestAuthorize(opt.accountID, !opt.rejectFR)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   611
		}
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   612
	case "block", "unblock":
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   613
		var relationship *madon.Relationship
271
c8b8b7cc8896 Remove deprecated flag (`--unset`)
Mikael Berthe <mikael@lilotux.net>
parents: 268
diff changeset
   614
		if subcmd == "unblock" {
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   615
			relationship, err = gClient.UnblockAccount(opt.accountID)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   616
		} else {
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   617
			relationship, err = gClient.BlockAccount(opt.accountID)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   618
		}
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   619
		obj = relationship
237
ac5ce4c0e79b Deprecate flag '--unset' and introduce subcommand (unpin, unboost...)
Mikael Berthe <mikael@lilotux.net>
parents: 226
diff changeset
   620
	case "mute", "unmute":
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   621
		var relationship *madon.Relationship
271
c8b8b7cc8896 Remove deprecated flag (`--unset`)
Mikael Berthe <mikael@lilotux.net>
parents: 268
diff changeset
   622
		if subcmd == "unmute" {
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   623
			relationship, err = gClient.UnmuteAccount(opt.accountID)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   624
		} else {
182
842f6cea448f madonctl accounts mute: Add '--notifications' flag
Mikael Berthe <mikael@lilotux.net>
parents: 180
diff changeset
   625
			var muteNotif *bool
842f6cea448f madonctl accounts mute: Add '--notifications' flag
Mikael Berthe <mikael@lilotux.net>
parents: 180
diff changeset
   626
			if accountMuteFlags.Lookup("notifications").Changed {
842f6cea448f madonctl accounts mute: Add '--notifications' flag
Mikael Berthe <mikael@lilotux.net>
parents: 180
diff changeset
   627
				muteNotif = &opt.muteNotifications
842f6cea448f madonctl accounts mute: Add '--notifications' flag
Mikael Berthe <mikael@lilotux.net>
parents: 180
diff changeset
   628
			}
842f6cea448f madonctl accounts mute: Add '--notifications' flag
Mikael Berthe <mikael@lilotux.net>
parents: 180
diff changeset
   629
			relationship, err = gClient.MuteAccount(opt.accountID, muteNotif)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   630
		}
145
0f6b8411ad36 Sync with Madon library 1.6: Some calls return a Relationship entity
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   631
		obj = relationship
226
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   632
	case "pin", "unpin":
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   633
		var relationship *madon.Relationship
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   634
		if subcmd == "unpin" {
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   635
			relationship, err = gClient.UnpinAccount(opt.accountID)
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   636
		} else {
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   637
			relationship, err = gClient.PinAccount(opt.accountID)
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   638
		}
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   639
		obj = relationship
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   640
	case "favourites":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   641
		var statusList []madon.Status
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   642
		statusList, err = gClient.GetFavourites(limOpts)
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   643
		if opt.keep > 0 && len(statusList) > int(opt.keep) {
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   644
			statusList = statusList[:opt.keep]
13
f862af8faf17 Add option --limit (-l) to limit the number of displayed results
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
   645
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   646
		obj = statusList
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   647
	case "blocks":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   648
		var accountList []madon.Account
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   649
		accountList, err = gClient.GetBlockedAccounts(limOpts)
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   650
		if opt.keep > 0 && len(accountList) > int(opt.keep) {
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   651
			accountList = accountList[:opt.keep]
13
f862af8faf17 Add option --limit (-l) to limit the number of displayed results
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
   652
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   653
		obj = accountList
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   654
	case "mutes":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   655
		var accountList []madon.Account
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   656
		accountList, err = gClient.GetMutedAccounts(limOpts)
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   657
		if opt.keep > 0 && len(accountList) > int(opt.keep) {
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   658
			accountList = accountList[:opt.keep]
13
f862af8faf17 Add option --limit (-l) to limit the number of displayed results
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
   659
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   660
		obj = accountList
226
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   661
	case "pinned":
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   662
		var accountList []madon.Account
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   663
		accountList, err = gClient.GetEndorsements(limOpts)
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   664
		if opt.keep > 0 && len(accountList) > int(opt.keep) {
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   665
			accountList = accountList[:opt.keep]
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   666
		}
5df927fa87ca Add account endorsement support
Mikael Berthe <mikael@lilotux.net>
parents: 224
diff changeset
   667
		obj = accountList
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   668
	case "relationships":
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   669
		var ids []madon.ActivityID
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   670
		ids, err = splitIDs(opt.accountIDs)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   671
		if err != nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   672
			return errors.New("cannot parse account IDs")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   673
		}
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   674
		if opt.accountID != "" { // Allow --account-id
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   675
			ids = []madon.ActivityID{opt.accountID}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   676
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   677
		if len(ids) < 1 {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   678
			return errors.New("missing account IDs")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   679
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   680
		var relationships []madon.Relationship
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   681
		relationships, err = gClient.GetAccountRelationships(ids)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   682
		obj = relationships
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   683
	case "reports":
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   684
		if opt.list {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   685
			var reports []madon.Report
20
b0ccc09f07a2 Sync with Madon library update; use limit API parameter
Mikael Berthe <mikael@lilotux.net>
parents: 16
diff changeset
   686
			reports, err = gClient.GetReports(limOpts)
167
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   687
			if opt.keep > 0 && len(reports) > int(opt.keep) {
1341bacd01c9 Add option --keep to keep the N last items
Mikael Berthe <mikael@lilotux.net>
parents: 160
diff changeset
   688
				reports = reports[:opt.keep]
13
f862af8faf17 Add option --limit (-l) to limit the number of displayed results
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
   689
			}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   690
			obj = reports
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   691
			break
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   692
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   693
		// Send a report
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   694
		var ids []madon.ActivityID
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   695
		ids, err = splitIDs(opt.statusIDs)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   696
		if err != nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   697
			return errors.New("cannot parse status IDs")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   698
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   699
		if len(ids) < 1 {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   700
			return errors.New("missing status IDs")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   701
		}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   702
		var report *madon.Report
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   703
		report, err = gClient.ReportUser(opt.accountID, ids, opt.comment)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   704
		obj = report
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   705
	case "update":
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   706
		var updateParams madon.UpdateAccountParams
223
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   707
		var source *madon.SourceParams
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   708
		change := false
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   709
178
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
   710
		if accountUpdateFlags.Lookup("display-name").Changed {
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   711
			updateParams.DisplayName = &opt.displayName
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   712
			change = true
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   713
		}
178
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
   714
		if accountUpdateFlags.Lookup("note").Changed {
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   715
			updateParams.Note = &opt.note
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   716
			change = true
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   717
		}
178
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
   718
		if accountUpdateFlags.Lookup("avatar").Changed {
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   719
			updateParams.AvatarImagePath = &opt.avatar
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   720
			change = true
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   721
		}
178
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
   722
		if accountUpdateFlags.Lookup("header").Changed {
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   723
			updateParams.HeaderImagePath = &opt.header
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   724
			change = true
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   725
		}
178
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
   726
		if accountUpdateFlags.Lookup("locked").Changed {
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   727
			updateParams.Locked = &opt.locked
178
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
   728
			change = true
15d211137c20 Add '--locked' flag to account update subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 168
diff changeset
   729
		}
222
e93d9c738273 Add '--bot' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 220
diff changeset
   730
		if accountUpdateFlags.Lookup("bot").Changed {
e93d9c738273 Add '--bot' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 220
diff changeset
   731
			updateParams.Bot = &opt.bot
e93d9c738273 Add '--bot' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 220
diff changeset
   732
			change = true
e93d9c738273 Add '--bot' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 220
diff changeset
   733
		}
223
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   734
		if accountUpdateFlags.Lookup("default-language").Changed {
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   735
			if source == nil {
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   736
				source = &madon.SourceParams{}
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   737
			}
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   738
			source.Language = &opt.defaultLanguage
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   739
			change = true
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   740
		}
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   741
		if accountUpdateFlags.Lookup("default-privacy").Changed {
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   742
			if source == nil {
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   743
				source = &madon.SourceParams{}
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   744
			}
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   745
			source.Privacy = &opt.defaultPrivacy
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   746
			change = true
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   747
		}
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   748
		if accountUpdateFlags.Lookup("default-sensitive").Changed {
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   749
			if source == nil {
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   750
				source = &madon.SourceParams{}
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   751
			}
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   752
			source.Sensitive = &opt.defaultSensitive
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   753
			change = true
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   754
		}
224
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   755
		if accountUpdateFlags.Lookup("profile-field").Changed {
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   756
			var fa = []madon.Field{}
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   757
			for _, f := range opt.profileFields {
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   758
				kv := strings.SplitN(f, "=", 2)
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   759
				if len(kv) != 2 {
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   760
					return errors.New("cannot parse field")
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   761
				}
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   762
				fa = append(fa, madon.Field{Name: kv[0], Value: kv[1]})
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   763
			}
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   764
			updateParams.FieldsAttributes = &fa
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   765
			change = true
d33a2c4fdfbf Add '--profile-field' flag to madonctl account update
Mikael Berthe <mikael@lilotux.net>
parents: 223
diff changeset
   766
		}
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   767
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   768
		if !change { // We want at least one update
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   769
			return errors.New("missing parameters")
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   770
		}
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   771
223
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   772
		updateParams.Source = source
0412068a9445 madonctl account update: Add support for updating 'source' parameters
Mikael Berthe <mikael@lilotux.net>
parents: 222
diff changeset
   773
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   774
		var account *madon.Account
220
08a2ee738117 Update calls to madon's PostStatus & UpdateAccount
Mikael Berthe <mikael@lilotux.net>
parents: 218
diff changeset
   775
		account, err = gClient.UpdateAccount(updateParams)
6
5228e517c455 Add account update
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   776
		obj = account
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   777
	default:
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   778
		return errors.New("accountSubcommand: internal error")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   779
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   780
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   781
	if err != nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   782
		errPrint("Error: %s", err.Error())
47
82d8b6074309 Set exit code to non-zero when API calls fail
Mikael Berthe <mikael@lilotux.net>
parents: 45
diff changeset
   783
		os.Exit(1)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   784
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   785
	if obj == nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   786
		return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   787
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   788
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   789
	p, err := getPrinter()
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   790
	if err != nil {
81
b1671f83e91b Do not display usage when GetPrinter fails
Mikael Berthe <mikael@lilotux.net>
parents: 47
diff changeset
   791
		errPrint("Error: %s", err.Error())
b1671f83e91b Do not display usage when GetPrinter fails
Mikael Berthe <mikael@lilotux.net>
parents: 47
diff changeset
   792
		os.Exit(1)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   793
	}
110
57843255fd1a Refactor printers
Mikael Berthe <mikael@lilotux.net>
parents: 102
diff changeset
   794
	return p.printObj(obj)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   795
}
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   796
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   797
// accountLookupUser tries to find a (single) user matching 'user'
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   798
// If the user is an HTTP URL, it will use the search API, else
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   799
// it will use the accounts/search API.
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   800
func accountLookupUser(user string) (madon.ActivityID, error) {
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   801
	var accID madon.ActivityID
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   802
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   803
	if strings.HasPrefix(user, "https://") || strings.HasPrefix(user, "http://") {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   804
		res, err := gClient.Search(user, true)
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   805
		if err != nil {
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   806
			return "", err
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   807
		}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   808
		if res != nil {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   809
			if len(res.Accounts) > 1 {
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   810
				return "", errors.New("several results")
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   811
			}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   812
			if len(res.Accounts) == 1 {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   813
				accID = res.Accounts[0].ID
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   814
			}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   815
		}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   816
	} else {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   817
		// Remove leading '@'
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   818
		user = strings.TrimLeft(user, "@")
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   819
184
a685b52c2ddf account search: Add flag '--following'
Mikael Berthe <mikael@lilotux.net>
parents: 182
diff changeset
   820
		accList, err := gClient.SearchAccounts(user, false, &madon.LimitParams{Limit: 2})
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   821
		if err != nil {
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   822
			return "", err
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   823
		}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   824
		for _, u := range accList {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   825
			if u.Acct == user {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   826
				accID = u.ID
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   827
				break
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   828
			}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   829
		}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   830
	}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   831
267
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   832
	if accID == "" {
5b91a65ba95a Update to handle non-int64 IDs
rjp <zimpenfish@gmail.com>
parents: 239
diff changeset
   833
		return "", errors.New("user not found")
102
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   834
	}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   835
	if verbose {
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   836
		errPrint("User '%s' is account ID %d", user, user)
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   837
	}
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   838
	return accID, nil
84ad56b643c8 Allow HTTP URLs in --user-id
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   839
}