diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2026-05-20 10:16:50 +0200 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2026-05-20 10:16:50 +0200 |
| commit | 44445734ba4a0f05564f808c2fd34a7f23c6fafb (patch) | |
| tree | 3bd22add718620cbf931286f55137bcc666100be /build.zig | |
| parent | 95ae9f15e1db335a7f8358d811ea37e2c89dd10f (diff) | |
Let's do a rewrite!
Created project structure and changed `build.zig` and added licence.
Diffstat (limited to 'build.zig')
| -rw-r--r-- | build.zig | 98 |
1 files changed, 60 insertions, 38 deletions
@@ -4,22 +4,25 @@ pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); - const opts = b.addOptions(); - - const disable_auth = b.option(bool, "disable-auth", "disable-authentication") orelse false; - opts.addOption(bool, "disable_auth", disable_auth); + const db_mod = b.addModule("db", .{ + .root_source_file = b.path("src/db/root.zig"), + .target = target, + }); - const static_path = b.option([]const u8, "static-path", "static-path") orelse "zig-out/dist"; - opts.addOption([]const u8, "static_path", static_path); + const api_mod = b.addModule("api", .{ + .root_source_file = b.path("src/api/root.zig"), + .target = target, + }); - const mod = b.addModule("memora", .{ - .root_source_file = b.path("src/root.zig"), + const frontend_mod = b.addModule("frontend", .{ + .root_source_file = b.path("src/frontend/root.zig"), .target = target, }); - mod.addOptions("config", opts); - mod.addImport("memora", mod); - mod.linkSystemLibrary("exif", .{}); + const http_mod = b.addModule("http", .{ + .root_source_file = b.path("src/http/root.zig"), + .target = target, + }); const exe = b.addExecutable(.{ .name = "memora", @@ -28,33 +31,16 @@ pub fn build(b: *std.Build) void { .target = target, .optimize = optimize, .imports = &.{ - .{ .name = "memora", .module = mod }, + .{ .name = "db", .module = db_mod }, + .{ .name = "api", .module = api_mod }, + .{ .name = "frontend", .module = frontend_mod }, + .{ .name = "http", .module = http_mod }, }, }), }); - exe.linkLibC(); b.installArtifact(exe); - const fonts_dist = b.addSystemCommand( - &.{ "cp", "-r", "static/fonts", "zig-out/dist" }, - ); - - const dist = b.addSystemCommand( - &.{ - "bun", - "build", - "static/index.html", - "--outdir", - "zig-out/dist", - "--loader", - ".css:text" - } - ); - - b.default_step.dependOn(&dist.step); - dist.step.dependOn(&fonts_dist.step); - const run_step = b.step("run", "Run the app"); const run_cmd = b.addRunArtifact(exe); @@ -66,20 +52,56 @@ pub fn build(b: *std.Build) void { run_cmd.addArgs(args); } - const mod_tests = b.addTest(.{ - .root_module = mod, + const db_tests = b.addTest(.{ + .root_module = db_mod, }); + const run_db_tests = b.addRunArtifact(db_tests); + const db_test_step = b.step("test-db", "Run database tests"); + db_test_step.dependOn(&run_db_tests.step); - const run_mod_tests = b.addRunArtifact(mod_tests); + const api_tests = b.addTest(.{ + .root_module = api_mod, + }); + const run_api_tests = b.addRunArtifact(api_tests); + const api_test_step = b.step("test-api", "Run api tests"); + api_test_step.dependOn(&run_api_tests.step); + + const frontend_tests = b.addTest(.{ + .root_module = frontend_mod, + }); + const run_frontend_tests = b.addRunArtifact(frontend_tests); + const frontend_test_step = b.step("test-frontend", "Run frontend tests"); + frontend_test_step.dependOn(&run_frontend_tests.step); + + const http_tests = b.addTest(.{ + .root_module = http_mod, + }); + const run_http_tests = b.addRunArtifact(http_tests); + const http_test_step = b.step("test-http", "Run http tests"); + http_test_step.dependOn(&run_http_tests.step); const exe_tests = b.addTest(.{ .root_module = exe.root_module, }); - const run_exe_tests = b.addRunArtifact(exe_tests); - const test_step = b.step("test", "Run tests"); - test_step.dependOn(&run_mod_tests.step); + const test_step = b.step("test", "Run all tests"); + test_step.dependOn(&run_db_tests.step); + test_step.dependOn(&run_api_tests.step); + test_step.dependOn(&run_frontend_tests.step); + test_step.dependOn(&run_http_tests.step); test_step.dependOn(&run_exe_tests.step); + const fmt_step = b.step("fmt", "Format"); + const do_fmt = b.addFmt(.{ + .paths = &.{ "src" }, + }); + fmt_step.dependOn(&do_fmt.step); + + const check_fmt_step = b.step("check", "Check format and syntax"); + const do_check_fmt = b.addFmt(.{ + .paths = &.{ "src" }, + .check = true, + }); + check_fmt_step.dependOn(&do_check_fmt.step); } |