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
|
/*
This source file is part of the Swift.org open source project
Copyright (c) 2021-2024 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: AsyncParsableCommand {
public init() {}
public static var configuration = CommandConfiguration(
abstract: "Create an index for the documentation from compiled data.")
/// 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
/// The path to the directory that all build output should be placed in.
public var outputURL: URL {
documentationBundle.urlOrFallback.appendingPathComponent("index", isDirectory: true)
}
public func run() async throws {
var indexAction = try IndexAction(fromIndexCommand: self)
try await 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: AsyncParsableCommand {
init() {}
static var configuration = CommandConfiguration(
commandName: "index",
abstract: "Create an index for the documentation from compiled data.",
shouldDisplay: false
)
@OptionGroup
var command: Index
public func run() async throws {
try await command.run()
}
}
}
|