File: Index.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (75 lines) | stat: -rw-r--r-- 2,580 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
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()
        }
    }
}