package cli import ( "context" "flag" "fmt" "strings" "github.com/peterbourgon/ff/v3/ffcli" metrics "edge-infra.dev/pkg/lib/gcp/monitoring/metrics" "edge-infra.dev/pkg/lib/gcp/monitoring/monutil" ) var getCmd = &ffcli.Command{ Name: "get", ShortUsage: "get [flags]", ShortHelp: "Get a specific metric descriptor by name", LongHelp: strings.TrimSpace(` Fetches the specific metric descriptor by name. `), FlagSet: globalFlags, Exec: runGet, } func runGet(ctx context.Context, args []string) error { var err error if len(args) > 0 { Fatalf("too many non-flag arguments: %q", args) } if !checkGetFlags() || !checkGlobalFlags() { return flag.ErrHelp } client, err := metrics.New(ctx, projectID) if err != nil { return Errorf("failed to create metric client: %w", err) } d, err := client.GetDescriptor(metricPrefix, metricName) if err != nil { return err } if jsonFormat { _ = metrics.TmplJSON.Execute(Stdout, d) } else { _ = metrics.TmplDesc.Execute(Stdout, d) fmt.Printf("\n%s", monutil.White(mmBroomTitle)) } return nil } // checkGetFlags validates the required get subcommand flags have been provided. func checkGetFlags() bool { if monutil.IsList(projectID) { fmt.Println("Error: 'get' currently supports single project/metric queries only - please specify only one project ID for the 'get' action") return false } return true }