import Foundation let args = CommandLine.arguments guard args.count == 2 else { print("Invalid argument list") print("Usage: generator config-path") exit(1) } let configuration: Configuration do { let configUrl = URL(fileURLWithPath: args[1]) let data = try Data(contentsOf: configUrl) configuration = try JSONDecoder().decode(from: data) } catch { print("Failed to read configuration: \(error)") exit(1) } let log = ValidationLog() let files = FileSystem( in: configuration.contentDirectory, to: configuration.outputDirectory) guard let siteData = Element(atRoot: configuration.contentDirectory) else { exit(0) } do { let siteGenerator = try SiteGenerator() siteGenerator.generate(site: siteData) } catch { print("Failed to generate website: \(error)") exit(2) } files.printGeneratedPages() files.printEmptyPages() files.printDraftPages() files.createImages() print("Images generated") files.copyRequiredFiles() files.printExternalFiles() files.writeHashes()