File: Index.swift

package info (click to toggle)
swiftlang 6.1.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,791,532 kB
  • sloc: cpp: 9,901,743; ansic: 2,201,431; asm: 1,091,827; python: 308,252; objc: 82,166; f90: 80,126; lisp: 38,358; pascal: 25,559; sh: 20,429; ml: 5,058; perl: 4,745; makefile: 4,484; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (63 lines) | stat: -rw-r--r-- 2,278 bytes parent folder | download
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()
        }
    }
}