(cmd *cobra.Command)
| 94 | } |
| 95 | |
| 96 | func resolveOutputFormat(cmd *cobra.Command) (OutputFormat, error) { |
| 97 | if cmd == nil { |
| 98 | return "", errors.New("cli: command is required") |
| 99 | } |
| 100 | |
| 101 | value, err := cmd.Flags().GetString(outputFlagName) |
| 102 | if err != nil { |
| 103 | return "", fmt.Errorf("cli: read output flag: %w", err) |
| 104 | } |
| 105 | jsonEnabled, err := cmd.Flags().GetBool(jsonFlagName) |
| 106 | if err == nil && jsonEnabled { |
| 107 | outputFlag := cmd.Flag(outputFlagName) |
| 108 | normalized := OutputFormat(strings.ToLower(strings.TrimSpace(value))) |
| 109 | if outputFlag != nil && outputFlag.Changed && normalized != "" && normalized != OutputJSON { |
| 110 | return "", errors.New("cli: --json cannot be combined with a non-json output format") |
| 111 | } |
| 112 | return OutputJSON, nil |
| 113 | } |
| 114 | |
| 115 | switch OutputFormat(strings.ToLower(strings.TrimSpace(value))) { |
| 116 | case "", OutputHuman: |
| 117 | return OutputHuman, nil |
| 118 | case OutputJSON: |
| 119 | return OutputJSON, nil |
| 120 | case OutputJSONL: |
| 121 | return OutputJSONL, nil |
| 122 | case OutputToon: |
| 123 | return OutputToon, nil |
| 124 | default: |
| 125 | return "", fmt.Errorf("cli: invalid output format %q", value) |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | func writeCommandOutput(cmd *cobra.Command, bundle outputBundle) error { |
| 130 | mode, err := resolveOutputFormat(cmd) |
no test coverage detected