mirror of
https://github.com/apple/swift-argument-parser.git
synced 2026-06-06 20:18:23 +00:00
- Fixes #466. - Adds initializers to ArgumentDefinition generic over a Container type. The Container type must conform to a new internal protocol ArgumentDefinitionContainer which describes functionality like default set of help options for the argument defined by the property wrapper, etc. - Adds overloads for Optional @Arguments and @Options with default values which emit deprecation warning to guide users towards using the non-Optional versions.
49 lines
2.0 KiB
Swift
49 lines
2.0 KiB
Swift
//===----------------------------------------------------------*- swift -*-===//
|
||
//
|
||
// This source file is part of the Swift Argument Parser open source project
|
||
//
|
||
// Copyright (c) 2020 Apple Inc. and the Swift project authors
|
||
// Licensed under Apache License v2.0 with Runtime Library Exception
|
||
//
|
||
// See https://swift.org/LICENSE.txt for license information
|
||
//
|
||
//===----------------------------------------------------------------------===//
|
||
|
||
/// Gets thrown while parsing and will be handled by the error output generation.
|
||
enum ParserError: Error {
|
||
case helpRequested(visibility: ArgumentVisibility)
|
||
case versionRequested
|
||
case dumpHelpRequested
|
||
|
||
case completionScriptRequested(shell: String?)
|
||
case completionScriptCustomResponse(String)
|
||
case unsupportedShell(String? = nil)
|
||
|
||
case notImplemented
|
||
case invalidState
|
||
case unknownOption(InputOrigin.Element, Name)
|
||
case invalidOption(String)
|
||
case nonAlphanumericShortOption(Character)
|
||
/// The option was there, but its value is missing, e.g. `--name` but no value for the `name`.
|
||
case missingValueForOption(InputOrigin, Name)
|
||
case unexpectedValueForOption(InputOrigin.Element, Name, String)
|
||
case unexpectedExtraValues([(InputOrigin, String)])
|
||
case duplicateExclusiveValues(previous: InputOrigin, duplicate: InputOrigin, originalInput: [String])
|
||
/// We need a value for the given key, but it’s not there. Some non-optional option or argument is missing.
|
||
case noValue(forKey: InputKey)
|
||
case unableToParseValue(InputOrigin, Name?, String, forKey: InputKey, originalError: Error?)
|
||
case missingSubcommand
|
||
case userValidationError(Error)
|
||
case noArguments(Error)
|
||
}
|
||
|
||
/// These are errors used internally to the parsing, and will not be exposed to the help generation.
|
||
enum InternalParseError: Error {
|
||
case wrongType(Any?, forKey: InputKey)
|
||
case subcommandNameMismatch
|
||
case subcommandLevelMismatch(Int, Int)
|
||
case subcommandLevelMissing(Int)
|
||
case subcommandLevelDuplicated(Int)
|
||
case expectedCommandButNoneFound
|
||
}
|