prefect server in zig
1const std = @import("std");
2
3pub fn build(b: *std.Build) void {
4 const target = b.standardTargetOptions(.{});
5 const optimize = b.standardOptimizeOption(.{});
6
7 const uuid_dep = b.dependency("uuid", .{
8 .target = target,
9 .optimize = optimize,
10 });
11
12 const zqlite = b.dependency("zqlite", .{
13 .target = target,
14 .optimize = optimize,
15 });
16
17 const zap = b.dependency("zap", .{
18 .target = target,
19 .optimize = optimize,
20 .openssl = false,
21 });
22
23 const pg = b.dependency("pg", .{
24 .target = target,
25 .optimize = optimize,
26 });
27
28 const cron = b.dependency("cron", .{
29 .target = target,
30 .optimize = optimize,
31 });
32
33 const redis_dep = b.dependency("redis", .{
34 .target = target,
35 .optimize = optimize,
36 });
37
38 const logfire = b.dependency("logfire", .{
39 .target = target,
40 .optimize = optimize,
41 });
42
43 const imports: []const std.Build.Module.Import = &.{
44 .{ .name = "uuid", .module = uuid_dep.module("uuid") },
45 .{ .name = "zqlite", .module = zqlite.module("zqlite") },
46 .{ .name = "zap", .module = zap.module("zap") },
47 .{ .name = "pg", .module = pg.module("pg") },
48 .{ .name = "cron", .module = cron.module("cron") },
49 .{ .name = "redis", .module = redis_dep.module("redis") },
50 .{ .name = "logfire", .module = logfire.module("logfire") },
51 };
52
53 const exe = b.addExecutable(.{
54 .name = "prefect-server",
55 .root_module = b.createModule(.{
56 .root_source_file = b.path("src/main.zig"),
57 .target = target,
58 .optimize = optimize,
59 .imports = imports,
60 }),
61 });
62 exe.linkLibC();
63 b.installArtifact(exe);
64
65 // run step
66 const run_cmd = b.addRunArtifact(exe);
67 run_cmd.step.dependOn(b.getInstallStep());
68 if (b.args) |args| {
69 run_cmd.addArgs(args);
70 }
71
72 const run_step = b.step("run", "run the prefect server");
73 run_step.dependOn(&run_cmd.step);
74
75 // tests
76 const unit_tests = b.addTest(.{
77 .root_module = b.createModule(.{
78 .root_source_file = b.path("src/main.zig"),
79 .target = target,
80 .optimize = optimize,
81 .imports = imports,
82 }),
83 });
84 unit_tests.linkLibC();
85
86 const run_unit_tests = b.addRunArtifact(unit_tests);
87 const test_step = b.step("test", "run unit tests");
88 test_step.dependOn(&run_unit_tests.step);
89}