mirror of
https://github.com/apple/swift-argument-parser.git
synced 2026-06-06 20:18:23 +00:00
56 lines
2.1 KiB
Swift
56 lines
2.1 KiB
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 missingValueOrUnknownCompositeOption(InputOrigin, Name, 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(valueRepresentation: String, forKey: InputKey)
|
||
case subcommandNameMismatch
|
||
case subcommandLevelMismatch(Int, Int)
|
||
case subcommandLevelMissing(Int)
|
||
case subcommandLevelDuplicated(Int)
|
||
case expectedCommandButNoneFound
|
||
}
|