Files
steipete--codexbar/Sources/CodexBarCLI/CLIOutputPreferences.swift
T
2026-07-13 12:22:33 +08:00

51 lines
1.4 KiB
Swift

import Commander
import Foundation
struct CLIOutputPreferences {
let format: OutputFormat
let jsonOnly: Bool
let pretty: Bool
var usesJSONOutput: Bool {
self.jsonOnly || self.format == .json
}
static func from(values: ParsedValues) -> CLIOutputPreferences {
let jsonOnly = values.flags.contains("jsonOnly")
let format = CodexBarCLI.decodeFormat(from: values)
let pretty = values.flags.contains("pretty")
return CLIOutputPreferences(format: format, jsonOnly: jsonOnly, pretty: pretty)
}
static func from(argv: [String]) -> CLIOutputPreferences {
var jsonOnly = false
var pretty = false
var format: OutputFormat = .text
var index = 0
while index < argv.count {
let arg = argv[index]
switch arg {
case "--json-only":
jsonOnly = true
format = .json
case "--json":
format = .json
case "--pretty":
pretty = true
case "--format":
let next = index + 1
if next < argv.count, let parsed = OutputFormat(argument: argv[next]) {
format = parsed
index += 1
}
default:
break
}
index += 1
}
return CLIOutputPreferences(format: format, jsonOnly: jsonOnly, pretty: pretty)
}
}