1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
# ``ArgumentParser``
Straightforward, type-safe argument parsing for Swift.
## 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.
```swift
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.

#### Additional Resources
- [`ArgumentParser` on GitHub](https://github.com/apple/swift-argument-parser/)
- [`ArgumentParser` on the Swift Forums](https://forums.swift.org/c/related-projects/argumentparser/60)
## Topics
### Essentials
- <doc:GettingStarted>
- ``ParsableCommand``
- ``AsyncParsableCommand``
- <doc:CommandsAndSubcommands>
- <doc:CustomizingCommandHelp>
### Arguments, Options, and Flags
- <doc:DeclaringArguments>
- ``Argument``
- ``Option``
- ``Flag``
- ``OptionGroup``
- ``ParsableArguments``
### Property Customization
- <doc:CustomizingHelp>
- ``ArgumentHelp``
- ``ArgumentVisibility``
- ``NameSpecification``
### Custom Types
- ``ExpressibleByArgument``
- ``EnumerableFlag``
### Validation and Errors
- <doc:Validation>
- ``ValidationError``
- ``CleanExit``
- ``ExitCode``
### Shell Completion Scripts
- <doc:InstallingCompletionScripts>
- <doc:CustomizingCompletions>
- ``CompletionKind``
### Advanced Topics
- <doc:ManualParsing>
- <doc:ExperimentalFeatures>
|