atproto utils for zig zat.dev
atproto sdk zig
26
fork

Configure Feed

Select the types of activity you want to include in your feed.

at codex/xrpc-errors-retry 123 lines 4.9 kB view raw
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 websocket = b.dependency("websocket", .{ 8 .target = target, 9 .optimize = optimize, 10 }); 11 12 const mod = b.addModule("zat", .{ 13 .root_source_file = b.path("src/root.zig"), 14 .target = target, 15 .optimize = optimize, 16 .link_libc = true, 17 .imports = &.{ 18 .{ .name = "websocket", .module = websocket.module("websocket") }, 19 }, 20 }); 21 22 const tests = b.addTest(.{ .root_module = mod }); 23 24 // add interop test fixtures (lazy — only fetched when running tests) 25 if (b.lazyDependency("atproto-interop-tests", .{})) |interop| { 26 const interop_files = .{ 27 // syntax fixtures 28 .{ "tid_syntax_valid", "syntax/tid_syntax_valid.txt" }, 29 .{ "tid_syntax_invalid", "syntax/tid_syntax_invalid.txt" }, 30 .{ "did_syntax_valid", "syntax/did_syntax_valid.txt" }, 31 .{ "did_syntax_invalid", "syntax/did_syntax_invalid.txt" }, 32 .{ "handle_syntax_valid", "syntax/handle_syntax_valid.txt" }, 33 .{ "handle_syntax_invalid", "syntax/handle_syntax_invalid.txt" }, 34 .{ "nsid_syntax_valid", "syntax/nsid_syntax_valid.txt" }, 35 .{ "nsid_syntax_invalid", "syntax/nsid_syntax_invalid.txt" }, 36 .{ "recordkey_syntax_valid", "syntax/recordkey_syntax_valid.txt" }, 37 .{ "recordkey_syntax_invalid", "syntax/recordkey_syntax_invalid.txt" }, 38 .{ "aturi_syntax_valid", "syntax/aturi_syntax_valid.txt" }, 39 .{ "aturi_syntax_invalid", "syntax/aturi_syntax_invalid.txt" }, 40 // crypto fixtures 41 .{ "signature_fixtures", "crypto/signature-fixtures.json" }, 42 .{ "w3c_didkey_K256", "crypto/w3c_didkey_K256.json" }, 43 .{ "w3c_didkey_P256", "crypto/w3c_didkey_P256.json" }, 44 // data model fixtures 45 .{ "data_model_fixtures", "data-model/data-model-fixtures.json" }, 46 // mst fixtures 47 .{ "mst_key_heights", "mst/key_heights.json" }, 48 .{ "common_prefix", "mst/common_prefix.json" }, 49 .{ "commit_proofs", "firehose/commit-proof-fixtures.json" }, 50 }; 51 inline for (interop_files) |entry| { 52 tests.root_module.addAnonymousImport(entry[0], .{ 53 .root_source_file = interop.path(entry[1]), 54 }); 55 } 56 } 57 58 const run_tests = b.addRunArtifact(tests); 59 60 const test_step = b.step("test", "run unit tests"); 61 test_step.dependOn(&run_tests.step); 62 63 // jetstream smoke test 64 const jetstream_smoke = b.addExecutable(.{ 65 .name = "jetstream-smoke", 66 .root_module = b.createModule(.{ 67 .root_source_file = b.path("scripts/jetstream_smoke.zig"), 68 .target = target, 69 .optimize = optimize, 70 .link_libc = true, 71 .imports = &.{.{ .name = "zat", .module = mod }}, 72 }), 73 }); 74 b.installArtifact(jetstream_smoke); 75 76 const run_smoke = b.addRunArtifact(jetstream_smoke); 77 const smoke_step = b.step("smoke", "run jetstream smoke test"); 78 smoke_step.dependOn(&run_smoke.step); 79 80 // firehose smoke test (CBOR + CAR + CID on live data) 81 const firehose_smoke = b.addExecutable(.{ 82 .name = "firehose-smoke", 83 .root_module = b.createModule(.{ 84 .root_source_file = b.path("scripts/firehose_smoke.zig"), 85 .target = target, 86 .optimize = optimize, 87 .link_libc = true, 88 .imports = &.{.{ .name = "zat", .module = mod }}, 89 }), 90 }); 91 b.installArtifact(firehose_smoke); 92 93 const run_firehose_smoke = b.addRunArtifact(firehose_smoke); 94 const firehose_smoke_step = b.step("firehose-smoke", "run firehose smoke test (CBOR/CAR/CID on live data)"); 95 firehose_smoke_step.dependOn(&run_firehose_smoke.step); 96 97 // CBOR codec benchmarks 98 const cbor_bench = b.addExecutable(.{ 99 .name = "cbor-bench", 100 .root_module = b.createModule(.{ 101 .root_source_file = b.path("src/internal/repo/cbor_bench.zig"), 102 .target = target, 103 .optimize = optimize, 104 }), 105 }); 106 b.installArtifact(cbor_bench); 107 108 const run_bench = b.addRunArtifact(cbor_bench); 109 const bench_step = b.step("bench", "run CBOR codec benchmarks"); 110 bench_step.dependOn(&run_bench.step); 111 112 // publish-docs script (uses zat to publish docs to ATProto) 113 const publish_docs = b.addExecutable(.{ 114 .name = "publish-docs", 115 .root_module = b.createModule(.{ 116 .root_source_file = b.path("scripts/publish-docs.zig"), 117 .target = target, 118 .optimize = optimize, 119 .imports = &.{.{ .name = "zat", .module = mod }}, 120 }), 121 }); 122 b.installArtifact(publish_docs); 123}