commands/stack/list/stack_list.go (45 lines of code) (raw):

package list import ( "fmt" "github.com/spf13/cobra" "gitlab.com/gitlab-org/cli/commands/cmdutils" "gitlab.com/gitlab-org/cli/pkg/git" "gitlab.com/gitlab-org/cli/pkg/iostreams" "gitlab.com/gitlab-org/cli/pkg/text" ) func NewCmdStackList(f *cmdutils.Factory, gr git.GitRunner) *cobra.Command { return &cobra.Command{ Use: "list", Aliases: []string{"ls"}, Short: "Lists all entries in the stack. (EXPERIMENTAL.)", Long: "Lists all entries in the stack. To select a different revision, use a command like 'stack move'.\n" + text.ExperimentalString, Example: "glab stack list", RunE: func(cmd *cobra.Command, args []string) error { title, err := git.GetCurrentStackTitle() if err != nil { return err } stack, err := git.GatherStackRefs(title) if err != nil { return err } currentBranch, err := git.CurrentBranch() if err != nil { return err } run(f.IO, stack, currentBranch) return nil }, } } func run(io *iostreams.IOStreams, stack git.Stack, currentBranch string) { c := io.Color() for ref := range stack.Iter() { if currentBranch == ref.Branch { fmt.Fprintf(io.StdOut, "> %s", c.Bold(ref.Branch)) } else { fmt.Fprintf(io.StdOut, " %s", ref.Branch) } fmt.Fprintf(io.StdOut, " - %s\n", c.Cyan(ref.Subject())) } }