49 lines
1.1 KiB
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())
|
|
}
|