rickub/clipublic Fork 0
main
Commits
Clone
git clone https://git.rickub.com/rickub/cli.git
git clone ssh://git@rickub.com/rickub/cli.git
Initial import of the rickub CLI as a standalone public project 1a1d430Unverified · on main · Olivier Girardot · 7h ago
org.go · 107 lines · 2.3 KBGo Blame HistoryRaw
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
package cmd

import (
	"fmt"

	"github.com/spf13/cobra"
)

func init() {
	orgCmd := &cobra.Command{
		Use:   "org <handle>",
		Short: "Read organization info, members, and teams",
	}

	viewCmd := &cobra.Command{
		Use:   "view <handle>",
		Short: "Show basic org info",
		Args:  cobra.ExactArgs(1),
		RunE:  runOrgView,
	}

	membersCmd := &cobra.Command{
		Use:   "members <handle>",
		Short: "List org members (members only)",
		Args:  cobra.ExactArgs(1),
		RunE:  runOrgMembers,
	}

	teamsCmd := &cobra.Command{
		Use:   "teams <handle>",
		Short: "List org teams (members only)",
		Args:  cobra.ExactArgs(1),
		RunE:  runOrgTeams,
	}

	orgCmd.AddCommand(viewCmd, membersCmd, teamsCmd)
	rootCmd.AddCommand(orgCmd)
}

func runOrgView(cmd *cobra.Command, args []string) error {
	client, err := newClient()
	if err != nil {
		return err
	}
	o, err := client.GetOrg(cmd.Context(), args[0])
	if err != nil {
		return err
	}
	if flagJSON {
		return printJSON(cmd.OutOrStdout(), o)
	}
	out := cmd.OutOrStdout()
	fmt.Fprintf(out, "%s\n", o.Handle)
	fmt.Fprintf(out, "Display name: %s\n", dash(o.DisplayName))
	fmt.Fprintf(out, "Created:      %s\n", humanTime(o.CreatedAt))
	return nil
}

func runOrgMembers(cmd *cobra.Command, args []string) error {
	client, err := newClient()
	if err != nil {
		return err
	}
	members, err := client.ListOrgMembers(cmd.Context(), args[0])
	if err != nil {
		return err
	}
	if flagJSON {
		return printJSON(cmd.OutOrStdout(), members)
	}
	if len(members) == 0 {
		fmt.Fprintln(cmd.OutOrStdout(), "No members.")
		return nil
	}
	tw := newTabw(cmd.OutOrStdout())
	fmt.Fprintln(tw, "HANDLE\tROLE\tNAME")
	for _, m := range members {
		fmt.Fprintf(tw, "%s\t%s\t%s\n", m.Handle, m.Role, dash(m.DisplayName))
	}
	tw.Flush()
	return nil
}

func runOrgTeams(cmd *cobra.Command, args []string) error {
	client, err := newClient()
	if err != nil {
		return err
	}
	teams, err := client.ListOrgTeams(cmd.Context(), args[0])
	if err != nil {
		return err
	}
	if flagJSON {
		return printJSON(cmd.OutOrStdout(), teams)
	}
	if len(teams) == 0 {
		fmt.Fprintln(cmd.OutOrStdout(), "No teams.")
		return nil
	}
	tw := newTabw(cmd.OutOrStdout())
	fmt.Fprintln(tw, "SLUG\tNAME\tSUB-TEAM\tDESCRIPTION")
	for _, t := range teams {
		fmt.Fprintf(tw, "%s\t%s\t%v\t%s\n", t.Slug, dash(t.Name), t.SubTeam, dash(t.Description))
	}
	tw.Flush()
	return nil
}