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
|
/*
This source file is part of the Swift.org open source project
Copyright (c) 2021 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
See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/
import ArgumentParser
import Foundation
extension Docc {
/// Indexes a documentation bundle.
public struct Index: ParsableCommand {
public init() {}
// MARK: - Configuration
public static var configuration = CommandConfiguration(
abstract: "Create an index for the documentation from compiled data.")
// MARK: - Command Line Options & Arguments
/// The user-provided path to a `.doccarchive` documentation archive.
@OptionGroup()
public var documentationBundle: DocCArchiveOption
/// The user-provided bundle name to use for the produced index.
@Option(help: "The bundle name for the index.")
public var bundleIdentifier: String
/// A user-provided value that is true if additional index information should be outputted to the terminal.
@Flag(help: "Print out the index information while the process runs.")
public var verbose = false
// MARK: - Computed Properties
/// The path to the directory that all build output should be placed in.
public var outputURL: URL {
documentationBundle.urlOrFallback.appendingPathComponent("index", isDirectory: true)
}
// MARK: - Execution
public mutating func run() throws {
// Initialize an `IndexAction` from the current options in the `Index` command.
var indexAction = try IndexAction(fromIndexCommand: self)
// Perform the index and print any warnings or errors found
try indexAction.performAndHandleResult()
}
}
// This command wraps the Index command so that we can still support it as a top-level command without listing it in the help
// text (but still list the Index command as a subcommand of the ProcessArchive command).
struct _Index: ParsableCommand {
init() {}
static var configuration = CommandConfiguration(
commandName: "index",
abstract: "Create an index for the documentation from compiled data.",
shouldDisplay: false
)
@OptionGroup
var command: Index
public mutating func run() throws {
try command.run()
}
}
}
|