const std = @import("std"); const webgen = @import("webgen"); pub fn build(b: *std.Build) void { const optimize = b.standardOptimizeOption(.{}); const target = b.standardTargetOptions(.{}); const run_webgen = webgen.installHtmlStep(b); run_webgen.addDirectoryArg(b.path("src")); const cgi_app = b.addExecutable(.{ .name = "submit.cgi", .root_module = b.createModule(.{ .optimize = optimize, .root_source_file = b.path("src/cgi/submit.zig"), .target = target, }), }); b.installArtifact(cgi_app); const run_cgi = b.step("run_cgi", "Run the CGI application"); run_cgi.dependOn(&b.addRunArtifact(cgi_app).step); const bundle_html = b.addSystemCommand(&.{ "tar", "--exclude=pages.tar.gz", "-czvf", "html-out/pages.tar.gz", "html-out", "zig-out" }); bundle_html.step.dependOn(&run_webgen.step); b.getInstallStep().dependOn(&bundle_html.step); const serve = b.addSystemCommand(&.{ "lighttpd", "-Df" }); serve.addFileArg(b.path("util/lighttpd.conf")); const run_server = b.step("serve", "Run a local test server"); serve.step.dependOn(b.getInstallStep()); run_server.dependOn(&serve.step); const publish_to_prod = b.step("publish", "Publish the website to production"); const copy_bundle = b.addSystemCommand(&.{"scp"}); copy_bundle.step.dependOn(b.getInstallStep()); copy_bundle.addFileArg(b.path("html-out/pages.tar.gz")); copy_bundle.addArg("debian@www.eviltransgenders.club:pages.tar.gz"); const unpack_bundle = b.addSystemCommand(&.{ "ssh", "debian@www.eviltransgenders.club", "cp pages.tar.gz /var/www/www.eviltransgenders.club && cd /var/www/www.eviltransgenders.club && tar -xvf /var/www/www.eviltransgenders.club/pages.tar.gz" }); unpack_bundle.step.dependOn(©_bundle.step); publish_to_prod.dependOn(&unpack_bundle.step); const clean_html = b.addSystemCommand(&.{"rm", "-r"}); clean_html.addFileArg(b.path("html-out")); clean_html.addFileArg(b.path("zig-out")); b.getUninstallStep().dependOn(&clean_html.step); }