Add a site URL override for building beta.samhuri.net

This commit is contained in:
Sami Samhuri 2019-12-11 00:01:12 -08:00
parent fa3ec10345
commit 23b3d2d625
5 changed files with 29 additions and 9 deletions

View file

@ -8,8 +8,10 @@ publish: blog
@echo @echo
./bin/publish --delete ./bin/publish --delete
publish_beta: blog publish_beta:
@echo @echo
./bin/build-sitegen
./bin/compile . www "https://beta.samhuri.net"
./bin/publish --beta --delete ./bin/publish --beta --delete
sitegen: sitegen:

View file

@ -20,9 +20,13 @@ public final class Generator {
let ignoredFilenames = [".DS_Store", ".gitkeep"] let ignoredFilenames = [".DS_Store", ".gitkeep"]
public init(sourceURL: URL, renderers: [Renderer]) throws { public init(sourceURL: URL, siteURLOverride: URL? = nil, renderers: [Renderer]) throws {
let siteURL = sourceURL.appendingPathComponent("site.json") let siteURL = sourceURL.appendingPathComponent("site.json")
let site = try Site.decode(from: siteURL) var site = try Site.decode(from: siteURL)
if let url = siteURLOverride {
print("Overriding site URL \(site.url) with \(url)")
site.url = url
}
let templatesURL = sourceURL.appendingPathComponent("templates") let templatesURL = sourceURL.appendingPathComponent("templates")
self.templateRenderer = SiteTemplateRenderer(site: site, templatesURL: templatesURL) self.templateRenderer = SiteTemplateRenderer(site: site, templatesURL: templatesURL)

View file

@ -12,7 +12,7 @@ public struct Site {
public let email: String? public let email: String?
public let title: String public let title: String
public let description: String? public let description: String?
public let url: URL public var url: URL
public let template: String public let template: String
public let styles: [String] public let styles: [String]
public let scripts: [String] public let scripts: [String]

View file

@ -8,12 +8,12 @@
import Darwin import Darwin
import Foundation import Foundation
func main(sourcePath: String, targetPath: String) throws { func main(sourcePath: String, targetPath: String, siteURLOverride: URL?) throws {
let sourceURL = URL(fileURLWithPath: sourcePath) let sourceURL = URL(fileURLWithPath: sourcePath)
let targetURL = URL(fileURLWithPath: targetPath) let targetURL = URL(fileURLWithPath: targetPath)
let generator = try Generator( let generator = try Generator(
sourceURL: sourceURL, sourceURL: sourceURL,
plugins: [ProjectsPlugin(), PostsPlugin(), RSSFeedPlugin(), JSONFeedPlugin()], siteURLOverride: siteURLOverride,
renderers: [LessRenderer(), MarkdownRenderer()] renderers: [LessRenderer(), MarkdownRenderer()]
) )
try generator.generate(targetURL: targetURL) try generator.generate(targetURL: targetURL)
@ -37,11 +37,24 @@ let targetPath = CommandLine.arguments[2]
let targetExists = FileManager.default.fileExists(atPath: targetPath) let targetExists = FileManager.default.fileExists(atPath: targetPath)
guard !targetExists else { guard !targetExists else {
print("error: Refusing to clobber existing target \(targetPath)") print("error: Refusing to clobber existing target \(targetPath)")
exit(2) exit(3)
}
let siteURLOverride: URL?
if CommandLine.argc > 3, CommandLine.arguments[3].isEmpty == false {
let urlString = CommandLine.arguments[3]
guard let url = URL(string: urlString) else {
print("error: invalid site URL \(urlString)")
exit(4)
}
siteURLOverride = url
}
else {
siteURLOverride = nil
} }
do { do {
try main(sourcePath: sourcePath, targetPath: targetPath) try main(sourcePath: sourcePath, targetPath: targetPath, siteURLOverride: siteURLOverride)
exit(0) exit(0)
} }
catch { catch {

View file

@ -6,12 +6,13 @@ set -e
THIS_DIR=$(dirname "$0") THIS_DIR=$(dirname "$0")
SOURCE_DIR="$1" SOURCE_DIR="$1"
TARGET_DIR="$2" TARGET_DIR="$2"
URL_OVERRIDE="$3"
function main() { function main() {
rm -rf "$TARGET_DIR" rm -rf "$TARGET_DIR"
echo "* generate site from $SOURCE_DIR into $TARGET_DIR" echo "* generate site from $SOURCE_DIR into $TARGET_DIR"
"$THIS_DIR/sitegen" "$SOURCE_DIR" "$TARGET_DIR" "$THIS_DIR/sitegen" "$SOURCE_DIR" "$TARGET_DIR" "$URL_OVERRIDE"
# echo "* inline CSS" # echo "* inline CSS"
# ruby -w $THIS_DIR/inline-css "$TARGET_DIR" # ruby -w $THIS_DIR/inline-css "$TARGET_DIR"