const std = @import("std"); const zine = @import("zine"); pub fn build(b: *std.Build) !void { const compile_stylesheet = b.step("stylesheet", "Compile stylesheet from scss files"); compile_stylesheet.result_cached = false; std.debug.assert(try compile_stylesheet.addDirectoryWatchInput(b.path("style"))); const compile_stylesheet_cmd_out = b.run(&.{ "sass", "--no-source-map", "--no-color", "--load-path=./style", "./style/index.scss", }); const compile_stylesheet_cmd = b.addWriteFile("altagos.css", compile_stylesheet_cmd_out); const install_stylesheet = b.addInstallDirectory(.{ .source_dir = compile_stylesheet_cmd.getDirectory(), .install_dir = .prefix, .install_subdir = "style", }); install_stylesheet.step.dependOn(&compile_stylesheet_cmd.step); const stylesheet = zine.BuildAsset{ .name = "altagos.css", .lp = b.path("zig-out/style/altagos.css"), .install_path = "altagos.css", .install_always = true, }; compile_stylesheet.dependOn(&install_stylesheet.step); const website = zine.website(b, .{ .output_path = "website", .build_assets = &.{stylesheet}, .force = true, }); website.step.dependOn(compile_stylesheet); b.getInstallStep().dependOn(&website.step); const serve = b.step("serve", "Start the Zine dev server"); const run_zine = zine.serve(b, .{ .build_assets = &.{stylesheet}, }); run_zine.step.dependOn(&install_stylesheet.step); if (b.args) |args| { run_zine.addArgs(args); } serve.dependOn(&run_zine.step); }