jira-cli/internal/cmd/project/list/list.go

49 lines
1.1 KiB
Go

package list
import (
"github.com/spf13/cobra"
"github.com/ankitpokhrel/jira-cli/api"
"github.com/ankitpokhrel/jira-cli/internal/cmdutil"
"github.com/ankitpokhrel/jira-cli/internal/view"
"github.com/ankitpokhrel/jira-cli/pkg/jira"
)
// NewCmdList is a list command.
func NewCmdList() *cobra.Command {
return &cobra.Command{
Use: "list",
Short: "List lists Jira projects",
Long: "List lists Jira projects that a user has access to.",
Aliases: []string{"lists", "ls"},
Run: List,
}
}
// List displays a list view.
func List(cmd *cobra.Command, _ []string) {
debug, err := cmd.Flags().GetBool("debug")
cmdutil.ExitIfError(err)
projects, total, err := func() ([]*jira.Project, int, error) {
s := cmdutil.Info("Fetching projects...")
defer s.Stop()
projects, err := api.DefaultClient(debug).Project()
if err != nil {
return nil, 0, err
}
return projects, len(projects), nil
}()
cmdutil.ExitIfError(err)
if total == 0 {
cmdutil.Failed("No projects found.")
return
}
v := view.NewProject(projects)
cmdutil.ExitIfError(v.Render())
}