public struct FullscreenCmdArgs: CmdArgs { /*conforms*/ public var commonState: CmdArgsCommonState fileprivate init(rawArgs: StrArrSlice) { self.commonState = .init(rawArgs) } public static let parser: CmdParser = .init( kind: .fullscreen, help: fullscreen_help_generated, flags: [ "--no-outer-gaps": trueBoolFlag(\.noOuterGaps), "--fail-if-noop": trueBoolFlag(\.failIfNoop), "--window-id": windowIdSubArgParser(), ], posArgs: [ArgParser(\.toggle, parseToggleEnum)], ) public var toggle: ToggleEnum = .toggle public var noOuterGaps: Bool = false public var failIfNoop: Bool = false } func parseFullscreenCmdArgs(_ args: StrArrSlice) -> ParsedCmd { parseSpecificCmdArgs(FullscreenCmdArgs(rawArgs: args), args) .filterNot("--no-outer-gaps is incompatible with 'off' argument") { $0.toggle == .off && $0.noOuterGaps } .filter("--fail-if-noop requires 'on' or 'off' argument") { $0.failIfNoop.implies($0.toggle == .on || $0.toggle == .off) } }