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
|
//===----------------------------------------------------------*- 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
//
//===----------------------------------------------------------------------===//
/// The type of completion to use for an argument or option.
public struct CompletionKind {
internal enum Kind {
/// Use the default completion kind for the value's type.
case `default`
/// Use the specified list of completion strings.
case list([String])
/// Complete file names with the specified extensions.
case file(extensions: [String])
/// Complete directory names that match the specified pattern.
case directory
/// Call the given shell command to generate completions.
case shellCommand(String)
/// Generate completions using the given closure.
case custom(([String]) -> [String])
}
internal var kind: Kind
/// Use the default completion kind for the value's type.
public static var `default`: CompletionKind {
CompletionKind(kind: .default)
}
/// Use the specified list of completion strings.
public static func list(_ words: [String]) -> CompletionKind {
CompletionKind(kind: .list(words))
}
/// Complete file names.
public static func file(extensions: [String] = []) -> CompletionKind {
CompletionKind(kind: .file(extensions: extensions))
}
/// Complete directory names.
public static var directory: CompletionKind {
CompletionKind(kind: .directory)
}
/// Call the given shell command to generate completions.
public static func shellCommand(_ command: String) -> CompletionKind {
CompletionKind(kind: .shellCommand(command))
}
/// Generate completions using the given closure.
public static func custom(_ completion: @escaping ([String]) -> [String]) -> CompletionKind {
CompletionKind(kind: .custom(completion))
}
}
|