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 imports: []const std.Build.Module.Import = &.{
39 .{ .name = "uuid", .module = uuid_dep.module("uuid") },
40 .{ .name = "zqlite", .module = zqlite.module("zqlite") },
41 .{ .name = "zap", .module = zap.module("zap") },
42 .{ .name = "pg", .module = pg.module("pg") },
43 .{ .name = "cron", .module = cron.module("cron") },
44 .{ .name = "redis", .module = redis_dep.module("redis") },
45 };
46
47 const exe = b.addExecutable(.{
48 .name = "prefect-server",
49 .root_module = b.createModule(.{
50 .root_source_file = b.path("src/main.zig"),
51 .target = target,
52 .optimize = optimize,
53 .imports = imports,
54 }),
55 });
56 exe.linkLibC();
57 b.installArtifact(exe);
58
59 // run step
60 const run_cmd = b.addRunArtifact(exe);
61 run_cmd.step.dependOn(b.getInstallStep());
62 if (b.args) |args| {
63 run_cmd.addArgs(args);
64 }
65
66 const run_step = b.step("run", "run the prefect server");
67 run_step.dependOn(&run_cmd.step);
68
69 // tests
70 const unit_tests = b.addTest(.{
71 .root_module = b.createModule(.{
72 .root_source_file = b.path("src/main.zig"),
73 .target = target,
74 .optimize = optimize,
75 .imports = imports,
76 }),
77 });
78 unit_tests.linkLibC();
79
80 const run_unit_tests = b.addRunArtifact(unit_tests);
81 const test_step = b.step("test", "run unit tests");
82 test_step.dependOn(&run_unit_tests.step);
83}