From 72a704b8cb0a27430eac595fec2f1f525b2197a0 Mon Sep 17 00:00:00 2001 From: Bob Farrell Date: Tue, 29 Oct 2024 22:43:01 +0000 Subject: [PATCH] WIP --- build.zig | 24 +++++++++++++++++++++--- src/jetzig/DefaultSchema.zig | 1 + src/jetzig/testing/App.zig | 1 + 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 src/jetzig/DefaultSchema.zig diff --git a/build.zig b/build.zig index e2683f7..629f5e8 100644 --- a/build.zig +++ b/build.zig @@ -210,14 +210,21 @@ pub fn jetzigInit(b: *std.Build, exe: *std.Build.Step.Compile, options: JetzigIn exe_static_routes.root_module.addImport("jetzig", jetzig_module); exe_static_routes.root_module.addImport("zmpl", zmpl_module); exe_static_routes.root_module.addImport("main", main_module); - // TODO: Prevent failure if schema file not present. - const schema_module = b.createModule(.{ .root_source_file = b.path("src/app/database/Schema.zig") }); + + const schema_module = if (try isSourceFile(b, "src/app/database/Schema.zig")) + b.createModule(.{ .root_source_file = b.path("src/app/database/Schema.zig") }) + else + jetzig_dep.builder.createModule( + .{ .root_source_file = jetzig_dep.builder.path("src/jetzig/DefaultSchema.zig") }, + ); + exe_static_routes.root_module.addImport("Schema", schema_module); + exe.root_module.addImport("Schema", schema_module); + schema_module.addImport("jetzig", jetzig_module); exe_static_routes.root_module.addImport("routes", routes_module); exe_static_routes.root_module.addImport("jetzig", jetzig_module); exe_static_routes.root_module.addImport("zmpl", zmpl_module); - exe_static_routes.root_module.addImport("Schema", schema_module); const markdown_fragments_write_files = b.addWriteFiles(); const path = markdown_fragments_write_files.add("markdown_fragments.zig", try generateMarkdownFragments(b)); @@ -349,3 +356,14 @@ fn getMarkdownFragmentsSource(allocator: std.mem.Allocator, source: [:0]const u8 return null; } + +fn isSourceFile(b: *std.Build, path: []const u8) !bool { + const dir = try std.fs.openDirAbsolute(b.build_root.path.?, .{}); + const stat = dir.statFile(path) catch |err| { + switch (err) { + error.FileNotFound => return false, + else => return err, + } + }; + return stat.kind == .file; +} diff --git a/src/jetzig/DefaultSchema.zig b/src/jetzig/DefaultSchema.zig new file mode 100644 index 0000000..9d6ce2c --- /dev/null +++ b/src/jetzig/DefaultSchema.zig @@ -0,0 +1 @@ +// An empty schema imported when no `src/app/database/Schema.zig` is present. diff --git a/src/jetzig/testing/App.zig b/src/jetzig/testing/App.zig index 70b53db..b58e14f 100644 --- a/src/jetzig/testing/App.zig +++ b/src/jetzig/testing/App.zig @@ -114,6 +114,7 @@ pub fn request( .cache = self.cache, .job_queue = self.job_queue, .global = undefined, + .repo = undefined, // TODO - database test helpers }; try server.decodeStaticParams();