aboutsummaryrefslogtreecommitdiffstats
path: root/commands/user_ls.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/user_ls.go')
-rw-r--r--commands/user_ls.go47
1 files changed, 41 insertions, 6 deletions
diff --git a/commands/user_ls.go b/commands/user_ls.go
index 609ff5a4..b3fb32e6 100644
--- a/commands/user_ls.go
+++ b/commands/user_ls.go
@@ -1,15 +1,21 @@
package commands
import (
+ "encoding/json"
"fmt"
+ "github.com/spf13/cobra"
+
"github.com/MichaelMure/git-bug/cache"
"github.com/MichaelMure/git-bug/util/colors"
"github.com/MichaelMure/git-bug/util/interrupt"
- "github.com/spf13/cobra"
)
-func runUserLs(cmd *cobra.Command, args []string) error {
+var (
+ userLsOutputFormat string
+)
+
+func runUserLs(_ *cobra.Command, _ []string) error {
backend, err := cache.NewRepoCache(repo)
if err != nil {
return err
@@ -17,21 +23,48 @@ func runUserLs(cmd *cobra.Command, args []string) error {
defer backend.Close()
interrupt.RegisterCleaner(backend.Close)
- for _, id := range backend.AllIdentityIds() {
- i, err := backend.ResolveIdentityExcerpt(id)
+ ids := backend.AllIdentityIds()
+ var users []*cache.IdentityExcerpt
+ for _, id := range ids {
+ user, err := backend.ResolveIdentityExcerpt(id)
if err != nil {
return err
}
+ users = append(users, user)
+ }
+
+ switch userLsOutputFormat {
+ case "json":
+ return userLsJsonFormatter(users)
+ case "default":
+ return userLsDefaultFormatter(users)
+ default:
+ return fmt.Errorf("unknown format %s", userLsOutputFormat)
+ }
+}
+func userLsDefaultFormatter(users []*cache.IdentityExcerpt) error {
+ for _, user := range users {
fmt.Printf("%s %s\n",
- colors.Cyan(i.Id.Human()),
- i.DisplayName(),
+ colors.Cyan(user.Id.Human()),
+ user.DisplayName(),
)
}
return nil
}
+func userLsJsonFormatter(users []*cache.IdentityExcerpt) error {
+ jsonUsers := make([]JSONIdentity, len(users))
+ for i, user := range users {
+ jsonUsers[i] = NewJSONIdentityFromExcerpt(user)
+ }
+
+ jsonObject, _ := json.MarshalIndent(jsonUsers, "", " ")
+ fmt.Printf("%s\n", jsonObject)
+ return nil
+}
+
var userLsCmd = &cobra.Command{
Use: "ls",
Short: "List identities.",
@@ -42,4 +75,6 @@ var userLsCmd = &cobra.Command{
func init() {
userCmd.AddCommand(userLsCmd)
userLsCmd.Flags().SortFlags = false
+ userLsCmd.Flags().StringVarP(&userLsOutputFormat, "format", "f", "default",
+ "Select the output formatting style. Valid values are [default,json]")
}