aerospace fork
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273public struct WorkspaceCmdArgs: CmdArgs { /*conforms*/ public var commonState: CmdArgsCommonState public init(rawArgs: StrArrSlice) { self.commonState = .init(rawArgs) } public static let parser: CmdParser<Self> = .init( kind: .workspace, help: workspace_help_generated, flags: [ "--auto-back-and-forth": ArgParser(\._autoBackAndForth, constSubArgParserFun(true)), "--wrap-around": ArgParser(\._wrapAround, constSubArgParserFun(true)), "--fail-if-noop": trueBoolFlag(\.failIfNoop),
"--stdin": ArgParser(\.commonState.explicitStdinFlag, constSubArgParserFun(true)), "--no-stdin": ArgParser(\.commonState.explicitStdinFlag, constSubArgParserFun(false)), ], posArgs: [ dashDashArg(mandatory: false), newMandatoryPosArgParser(\.target, parseWorkspaceTarget, placeholder: workspaceTargetPlaceholder), ], conflictingOptions: [ ["--stdin", "--no-stdin"], ], )
public var target: Lateinit<WorkspaceTarget> = .uninitialized public var _autoBackAndForth: Bool? public var failIfNoop: Bool = false public var _wrapAround: Bool?}
func parseWorkspaceCmdArgs(_ args: StrArrSlice) -> ParsedCmd<WorkspaceCmdArgs> { parseSpecificCmdArgs(WorkspaceCmdArgs(rawArgs: args), args) .filter("--wrapAround requires using \(NextPrev.unionLiteral) argument") { ($0._wrapAround != nil).implies($0.target.val.isRelatve) } .filterNot("--auto-back-and-forth is incompatible with \(NextPrev.unionLiteral)") { $0._autoBackAndForth != nil && $0.target.val.isRelatve } .filterNot("--fail-if-noop is incompatible with \(NextPrev.unionLiteral)") { $0.failIfNoop && $0.target.val.isRelatve } .filterNot("--fail-if-noop is incompatible with --auto-back-and-forth") { $0.autoBackAndForth && $0.failIfNoop } .filter("--stdin and --no-stdin require using \(NextPrev.unionLiteral) argument") { ($0.commonState.explicitStdinFlag != nil).implies($0.target.val.isRelatve) }}
extension WorkspaceCmdArgs { public var wrapAround: Bool { _wrapAround ?? false } public var autoBackAndForth: Bool { _autoBackAndForth ?? false } public var useStdin: Bool { commonState.explicitStdinFlag ?? false }}
public enum WorkspaceTarget: Equatable, Sendable { case relative(NextPrev) case direct(WorkspaceName)
public var isRelatve: Bool { switch self { case .relative: true default: false } }
public func workspaceNameOrNil() -> WorkspaceName? { switch self { case .direct(let name): name case .relative: nil } }}
let workspaceTargetPlaceholder = "(<workspace-name>|next|prev)"
func parseWorkspaceTarget(i: PosArgParserInput) -> ParsedCliArgs<WorkspaceTarget> { switch (i.arg, i.sawDashDash) { case ("next", false): return .succ(.relative(.next), advanceBy: 1) case ("prev", false): return .succ(.relative(.prev), advanceBy: 1) default: return .init(WorkspaceName.parse(i.arg).map(WorkspaceTarget.direct), advanceBy: 1) }}