package cmd import ( "fmt" "github.com/spf13/cobra" ) func init() { orgCmd := &cobra.Command{ Use: "org ", Short: "Read organization info, members, and teams", } viewCmd := &cobra.Command{ Use: "view ", Short: "Show basic org info", Args: cobra.ExactArgs(1), RunE: runOrgView, } membersCmd := &cobra.Command{ Use: "members ", Short: "List org members (members only)", Args: cobra.ExactArgs(1), RunE: runOrgMembers, } teamsCmd := &cobra.Command{ Use: "teams ", 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 }