public struct SplitCmdArgs: CmdArgs { /*conforms*/ public var commonState: CmdArgsCommonState fileprivate init(rawArgs: StrArrSlice) { self.commonState = .init(rawArgs) } public static let parser: CmdParser = .init( kind: .split, help: split_help_generated, flags: [ "--window-id": windowIdSubArgParser(), ], posArgs: [newMandatoryPosArgParser(\.arg, parseSplitArg, placeholder: SplitArg.unionLiteral)], ) public var arg: Lateinit = .uninitialized public enum SplitArg: String, CaseIterable, Sendable { case horizontal, vertical, opposite } } func parseSplitCmdArgs(_ args: StrArrSlice) -> ParsedCmd { parseSpecificCmdArgs(SplitCmdArgs(rawArgs: args), args) } private func parseSplitArg(i: PosArgParserInput) -> ParsedCliArgs { .init(parseEnum(i.arg, SplitCmdArgs.SplitArg.self), advanceBy: 1) }