package cmd import ( "axolotl/output" "axolotl/service" "fmt" "os" "github.com/spf13/cobra" ) var lTags, lRels []string var lStatus, lPrio, lType, lNamespace, lAssignee, lMention string var listCmd = &cobra.Command{ Use: "list", Short: "List nodes", Run: func(cmd *cobra.Command, args []string) { svc, err := service.GetNodeService(cfg) if err != nil { fmt.Fprintln(os.Stderr, err) return } filter := service.ListFilter{ Tags: lTags, Status: lStatus, Priority: lPrio, Type: lType, Namespace: lNamespace, Assignee: lAssignee, Mention: lMention, } for _, r := range lRels { ri, err := parseRelInput(r) if err != nil { fmt.Fprintf(os.Stderr, "failed to parse relation flag: %v", err) return } filter.Rels = append(filter.Rels, ri) } if nodes, err := svc.List(filter); err == nil { output.PrintNodes(cmd.OutOrStdout(), svc, nodes, jsonFlag) } else { fmt.Fprintf(os.Stderr, "err: %v\n", err) } }, } func init() { rootCmd.AddCommand(listCmd) f := listCmd.Flags() f.StringArrayVar(&lTags, "tag", nil, "filter by tag") f.StringArrayVar(&lRels, "rel", nil, "filter by relation (type:target)") f.StringVar(&lStatus, "status", "", "filter by status") f.StringVar(&lPrio, "prio", "", "filter by priority") f.StringVar(&lType, "type", "", "filter by type") f.StringVar(&lNamespace, "namespace", "", "filter by namespace") f.StringVar(&lAssignee, "assignee", "", "filter by assignee") f.StringVar(&lMention, "mention", "", "filter by mention") }