aboutsummaryrefslogtreecommitdiff
path: root/build.zig
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2026-05-20 10:16:50 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2026-05-20 10:16:50 +0200
commit44445734ba4a0f05564f808c2fd34a7f23c6fafb (patch)
tree3bd22add718620cbf931286f55137bcc666100be /build.zig
parent95ae9f15e1db335a7f8358d811ea37e2c89dd10f (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.zig98
1 files changed, 60 insertions, 38 deletions
diff --git a/build.zig b/build.zig
index 9379b10..c84375a 100644
--- a/build.zig
+++ b/build.zig
@@ -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);
}