Skip to content
This repository was archived by the owner on Jun 1, 2023. It is now read-only.

Commit d450da6

Browse files
committed
Omit Home page for output with only a single page
Resolves #47
1 parent 95f717d commit d450da6

File tree

1 file changed

+31
-16
lines changed

1 file changed

+31
-16
lines changed

Sources/swift-doc/Subcommands/Generate.swift

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ extension SwiftDoc {
1717
var inputs: [String]
1818

1919
@Option(name: [.long, .customShort("n")],
20-
help: "The name of the module")
20+
help: "The name of the module")
2121
var moduleName: String
2222

2323
@Option(name: .shortAndLong,
@@ -47,15 +47,6 @@ extension SwiftDoc {
4747

4848
var pages: [String: Page] = [:]
4949

50-
switch format {
51-
case .commonmark:
52-
pages["Home"] = HomePage(module: module)
53-
pages["_Sidebar"] = SidebarPage(module: module)
54-
pages["_Footer"] = FooterPage()
55-
case .html:
56-
pages["Home"] = HomePage(module: module)
57-
}
58-
5950
var globals: [String: [Symbol]] = [:]
6051
for symbol in module.interface.topLevelSymbols.filter({ $0.isPublic }) {
6152
switch symbol.api {
@@ -76,19 +67,43 @@ extension SwiftDoc {
7667
pages[path(for: name)] = GlobalPage(module: module, name: name, symbols: symbols)
7768
}
7869

79-
try pages.map { $0 }.parallelForEach {
70+
guard !pages.isEmpty else { return }
71+
72+
if pages.count == 1, let page = pages.first?.value {
8073
let filename: String
8174
switch format {
8275
case .commonmark:
83-
filename = "\($0.key).md"
84-
case .html where $0.key == "Home":
85-
filename = "index.html"
76+
filename = "Home.md"
8677
case .html:
87-
filename = "\($0.key)/index.html"
78+
filename = "index.html"
8879
}
8980

9081
let url = outputDirectoryURL.appendingPathComponent(filename)
91-
try $0.value.write(to: url, format: format)
82+
try page.write(to: url, format: format)
83+
} else {
84+
switch format {
85+
case .commonmark:
86+
pages["Home"] = HomePage(module: module)
87+
pages["_Sidebar"] = SidebarPage(module: module)
88+
pages["_Footer"] = FooterPage()
89+
case .html:
90+
pages["Home"] = HomePage(module: module)
91+
}
92+
93+
try pages.map { $0 }.parallelForEach {
94+
let filename: String
95+
switch format {
96+
case .commonmark:
97+
filename = "\($0.key).md"
98+
case .html where $0.key == "Home":
99+
filename = "index.html"
100+
case .html:
101+
filename = "\($0.key)/index.html"
102+
}
103+
104+
let url = outputDirectoryURL.appendingPathComponent(filename)
105+
try $0.value.write(to: url, format: format)
106+
}
92107
}
93108
}
94109
}

0 commit comments

Comments
 (0)