ArgumentParser

    Straightforward, type-safe argument parsing for Swift.

    ArgumentParser.md
    import ArgumentParser

    Interface Breakdown

    Declarations

    60.7 percent of the declarations in this module are initializers, type members, or enum cases14.2 percent of the declarations in this module are instance members2.8 percent of the declarations in this module are protocols6.6 percent of the declarations in this module are protocol requirements6.6 percent of the declarations in this module are default implementations9.0 percent of the declarations in this module are structures

    Symbols

    3.9 percent of the symbols in this module are operators54.9 percent of the symbols in this module are initializers, type members, or enum cases18.5 percent of the symbols in this module are instance members2.6 percent of the symbols in this module are protocols6.0 percent of the symbols in this module are protocol requirements6.0 percent of the symbols in this module are default implementations8.2 percent of the symbols in this module are structures

    Doc Coverage

    Declarations

    80.1 percent of the declarations in this module are fully documented19.0 percent of the declarations in this module are indirectly documented0.9 percent of the declarations in this module are completely undocumented

    Symbols

    80.1 percent of the symbols in this module are fully documented19.0 percent of the symbols in this module are indirectly documented0.9 percent of the symbols in this module are completely undocumented

    Overview

    By using ArgumentParser, you can create a command-line interface tool by declaring simple Swift types. Begin by declaring a type that defines the information that you need to collect from the command line. Decorate each stored property with one of ArgumentParser‘s property wrappers, declare conformance to ParsableCommand, and implement your command’s logic in its run() method.

    import ArgumentParser
    
    @main
    struct Repeat: ParsableCommand {
        @Argument(help: "The phrase to repeat.")
        var phrase: String
    
        @Option(help: "The number of times to repeat 'phrase'.")
        var count: Int? = nil
    
        mutating func run() throws {
            let repeatCount = count ?? 2
            for _ in 0..<repeatCount {
                print(phrase)
            }
        }
    }

    When a user executes your command, the ArgumentParser library parses the command-line arguments, instantiates your command type, and then either calls your run() method or exits with a useful message.

    The output of the Repeat command, declared above.

    Additional Resources

    See Also

    Essentials

    Arguments, Options, and Flags

    Property Customization

    Custom Types

    Validation and Errors

    Shell Completion Scripts

    Advanced Topics