cmd/emojis.go
author rjp <zimpenfish@gmail.com>
Mon, 23 Jan 2023 16:39:02 +0000
changeset 267 5b91a65ba95a
parent 239 605a00e9d1ab
child 265 05c40b36d3b2
permissions -rw-r--r--
Update to handle non-int64 IDs Pleroma/Akkoma and GotoSocial use opaque IDs rather than `int64`s like Mastodon which means that `madon` can't talk to either of those. This commit updates everything that can be an ID to `madon.ActivityID` which is an alias for `string` - can't create a specific type for it since there's more than a few places where they're concatenated directly to strings for URLs, etc. Which means it could just as easily be a direct `string` type itself but I find that having distinct types can often make the code more readable and understandable. One extra bit is that `statusOpts` has grown a `_hasReplyTo` boolean to indicate whether the `--in-reply-to` flag was given or not because we can't distinguish because "empty because default" or "empty because given and empty". Another way around this would be to set the default to some theoretically impossible or unlikely string but you never know when someone might spin up an instance where, e.g., admin posts have negative integer IDs.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
187
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
// Copyright © 2018 Mikael Berthe <mikael@lilotux.net>
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
//
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
// Licensed under the MIT license.
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
// Please see the LICENSE file is this directory.
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
package cmd
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
import (
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
	"os"
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
	"github.com/spf13/cobra"
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
239
605a00e9d1ab Switch to Go modules (and bump Go version requirement)
Mikael Berthe <mikael@lilotux.net>
parents: 191
diff changeset
    13
	"github.com/McKael/madon/v2"
187
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
var emojiOpts struct {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
	// Used for several subcommands to limit the number of results
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
	limit, keep uint
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
	//sinceID, maxID int64
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
	all bool
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    21
}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    22
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    23
//emojiCmd represents the emoji command
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    24
var emojiCmd = &cobra.Command{
191
ae9b3c28fab3 emojis: change defaults
Mikael Berthe <mikael@lilotux.net>
parents: 187
diff changeset
    25
	Use:     "emojis",
ae9b3c28fab3 emojis: change defaults
Mikael Berthe <mikael@lilotux.net>
parents: 187
diff changeset
    26
	Aliases: []string{"emoji"},
187
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    27
	Short:   "Display server emojis",
191
ae9b3c28fab3 emojis: change defaults
Mikael Berthe <mikael@lilotux.net>
parents: 187
diff changeset
    28
	RunE:    emojiGetRunE, // Defaults to list
187
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
func init() {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
	RootCmd.AddCommand(emojiCmd)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
	// Subcommands
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
	emojiCmd.AddCommand(emojiSubcommands...)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
	emojiGetCustomSubcommand.Flags().UintVarP(&emojiOpts.limit, "limit", "l", 0, "Limit number of API results")
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
	emojiGetCustomSubcommand.Flags().UintVarP(&emojiOpts.keep, "keep", "k", 0, "Limit number of results")
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
	emojiGetCustomSubcommand.Flags().BoolVar(&emojiOpts.all, "all", false, "Fetch all results")
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    42
var emojiSubcommands = []*cobra.Command{
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    43
	emojiGetCustomSubcommand,
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    44
}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    45
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
var emojiGetCustomSubcommand = &cobra.Command{
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    47
	Use:     "list",
191
ae9b3c28fab3 emojis: change defaults
Mikael Berthe <mikael@lilotux.net>
parents: 187
diff changeset
    48
	Short:   "Display the custom emojis (default subcommand)",
187
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
	Long:    `Display the list of custom emojis of the instance.`,
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    50
	Aliases: []string{"get", "display", "show"},
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
	RunE:    emojiGetRunE,
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    52
}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
func emojiGetRunE(cmd *cobra.Command, args []string) error {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    55
	opt := emojiOpts
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    56
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    57
	// Set up LimitParams
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    58
	var limOpts *madon.LimitParams
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    59
	if opt.all || opt.limit > 0 {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    60
		limOpts = new(madon.LimitParams)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    61
		limOpts.All = opt.all
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
	}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
	if opt.limit > 0 {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    64
		limOpts.Limit = int(opt.limit)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    65
	}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    66
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    67
	// We don't have to log in
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    68
	if err := madonInit(false); err != nil {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    69
		return err
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    70
	}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    71
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    72
	var obj interface{}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    73
	var err error
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    74
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    75
	var emojiList []madon.Emoji
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    76
	emojiList, err = gClient.GetCustomEmojis(limOpts)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    77
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    78
	if opt.keep > 0 && len(emojiList) > int(opt.keep) {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    79
		emojiList = emojiList[:opt.keep]
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    80
	}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    81
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    82
	obj = emojiList
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    83
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    84
	if err != nil {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    85
		errPrint("Error: %s", err.Error())
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    86
		os.Exit(1)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    87
	}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    88
	if obj == nil {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    89
		return nil
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    90
	}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    91
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    92
	p, err := getPrinter()
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    93
	if err != nil {
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    94
		errPrint("Error: %v", err)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    95
		os.Exit(1)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    96
	}
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    97
	return p.printObj(obj)
63d1e5751300 Add "madonctl emoji list"
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    98
}