diff --git a/Changelog.md b/Changelog.md index a19d42e7..cbb2c655 100644 --- a/Changelog.md +++ b/Changelog.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Added `--base-url` option. + #65 by @kean. + ## [1.0.0-beta.2] - 2020-04-08 ### Changed diff --git a/Sources/swift-doc/Subcommands/Generate.swift b/Sources/swift-doc/Subcommands/Generate.swift index 9f91ef34..707cb9ba 100644 --- a/Sources/swift-doc/Subcommands/Generate.swift +++ b/Sources/swift-doc/Subcommands/Generate.swift @@ -29,6 +29,11 @@ extension SwiftDoc { default: .commonmark, help: "The output format") var format: Format + + @Option(name: .customLong("base-url"), + default: "/", + help: "The base URL used for all relative URLs in generated documents.") + var baseURL: String } static var configuration = CommandConfiguration(abstract: "Generates Swift documentation") @@ -79,7 +84,7 @@ extension SwiftDoc { } let url = outputDirectoryURL.appendingPathComponent(filename) - try page.write(to: url, format: format) + try page.write(to: url, format: format, baseURL: options.baseURL) } else { switch format { case .commonmark: @@ -102,7 +107,7 @@ extension SwiftDoc { } let url = outputDirectoryURL.appendingPathComponent(filename) - try $0.value.write(to: url, format: format) + try $0.value.write(to: url, format: format, baseURL: options.baseURL) } } } catch { diff --git a/Sources/swift-doc/Supporting Types/Components/Relationships.swift b/Sources/swift-doc/Supporting Types/Components/Relationships.swift index 5ef8f7cf..c442b414 100644 --- a/Sources/swift-doc/Supporting Types/Components/Relationships.swift +++ b/Sources/swift-doc/Supporting Types/Components/Relationships.swift @@ -113,7 +113,7 @@ struct Relationships: Component { """# } else { return #""" -
\#(symbol.id)
+
\#(symbol.id)
\#(commonmark: symbol.documentation?.summary ?? "")
"""# } diff --git a/Sources/swift-doc/Supporting Types/Helpers.swift b/Sources/swift-doc/Supporting Types/Helpers.swift index 92962c96..695509b7 100644 --- a/Sources/swift-doc/Supporting Types/Helpers.swift +++ b/Sources/swift-doc/Supporting Types/Helpers.swift @@ -12,7 +12,7 @@ public func linkCodeElements(of html: String, for symbol: Symbol, in module: Mod let candidate = candidates.filter({ $0 != symbol }).first { let a = Element(name: "a") - a["href"] = "/" + path(for: candidate) + a["href"] = path(for: candidate) element.wrap(inside: a) } } diff --git a/Sources/swift-doc/Supporting Types/Layout.swift b/Sources/swift-doc/Supporting Types/Layout.swift index 74e5e4e6..4baef7e4 100644 --- a/Sources/swift-doc/Supporting Types/Layout.swift +++ b/Sources/swift-doc/Supporting Types/Layout.swift @@ -1,7 +1,7 @@ import HypertextLiteral import Foundation -func layout(_ page: Page) -> HTML { +func layout(_ page: Page, baseURL: String) -> HTML { let html = page.html return #""" @@ -11,13 +11,14 @@ func layout(_ page: Page) -> HTML { \#(page.module.name) - \#(page.title) +
- + \#(page.module.name) diff --git a/Sources/swift-doc/Supporting Types/Page.swift b/Sources/swift-doc/Supporting Types/Page.swift index 6ed37aa8..fec3c7bb 100644 --- a/Sources/swift-doc/Supporting Types/Page.swift +++ b/Sources/swift-doc/Supporting Types/Page.swift @@ -19,13 +19,13 @@ extension Page { } extension Page { - func write(to url: URL, format: SwiftDoc.Generate.Format) throws { + func write(to url: URL, format: SwiftDoc.Generate.Format, baseURL: String) throws { let data: Data? switch format { case .commonmark: data = document.render(format: .commonmark).data(using: .utf8) case .html: - data = layout(self).description.data(using: .utf8) + data = layout(self, baseURL: baseURL).description.data(using: .utf8) } let fileManager = FileManager.default