atproto pds in zig pds.zat.dev
pds atproto
Something went wrong. Try again.
Zig
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586const std = @import("std");const zds = @import("zds");
const Io = std.Io;
var app_threaded_io: Io.Threaded = undefined;pub const std_options_debug_threaded_io: ?*Io.Threaded = &app_threaded_io;const io_worker_limit = 16;
pub fn main(init: std.process.Init) !void { const allocator = std.heap.smp_allocator; app_threaded_io = Io.Threaded.init(allocator, .{ .async_limit = .limited(io_worker_limit), .concurrent_limit = .limited(io_worker_limit), }); const io = app_threaded_io.io();
const options = zds.internal.cli.parse(init.minimal) catch |err| switch (err) { error.Help => { zds.internal.cli.usage(); return; }, else => return err, };
if (options.public_url) |value| zds.core.config.setPublicUrl(value); if (options.server_did) |value| { zds.core.config.setServerDid(value); } else if (options.public_url != null) { try zds.core.config.deriveServerDidFromPublicUrl(); } if (options.plc_directory) |value| zds.core.config.setPlcDirectory(value); zds.core.config.setPlcRotationKey(options.plc_rotation_key); zds.core.config.setRecoveryDidKey(options.recovery_did_key); if (options.mail_provider) |value| { const parsed = zds.core.config.parseMailProvider(value) orelse return error.InvalidMailProvider; zds.core.config.setMailProvider(parsed); } zds.core.config.setEmailFrom(options.email_from); zds.core.config.setResendApiKey(options.resend_api_key); zds.core.config.setComailApiKey(options.comail_api_key); zds.core.config.setComailDid(options.comail_did); if (options.blob_upload_limit) |value| zds.core.config.setBlobUploadLimit(value); if (options.blobstore_path) |value| zds.core.config.setBlobstorePath(value); if (options.handle_domains) |value| { try zds.internal.handles.validateDomains(value); zds.core.config.setHandleDomains(value); } if (options.crawlers) |value| zds.core.config.setCrawlers(value); if (options.operator_handle) |value| zds.core.config.setOperatorHandle(value); if (options.max_concurrent_repo_exports) |value| zds.core.config.setMaxConcurrentRepoExports(value); if (options.proxy_service_did) |value| zds.core.config.setProxyServiceDid(value); if (options.proxy_service_id) |value| zds.core.config.setProxyServiceId(value); if (options.proxy_service_url) |value| zds.core.config.setProxyServiceUrl(value); if (options.jwt_secret) |value| zds.core.config.setJwtSecret(value); zds.core.config.setDpopSecret(options.dpop_secret); zds.core.config.setAdminToken(options.admin_token); zds.core.config.setInviteRequired(options.invite_required); zds.core.config.setPermissionedData(options.permissioned_data); if (options.log_level) |value| { const parsed = zds.core.config.parseLogLevel(value) orelse return error.InvalidLogLevel; zds.core.config.setLogLevel(parsed); }
zds.core.clock.init(io); const startup_started = zds.core.clock.monotonicNs(); zds.storage.blobstore.init(io, zds.core.config.blobstorePath()); zds.storage.eventlog.init(io); try zds.storage.store.init(io, options.db_path); const storage_ready = zds.core.clock.monotonicNs(); zds.core.log.info("startup storage_ms={d}\n", .{(storage_ready - startup_started) / std.time.ns_per_ms}); zds.storage.store.startBlobGarbageCollector(); if (zds.core.config.permissionedData()) try zds.atproto.space.startNotificationWorker(); if (zds.core.config.inviteRequired()) { if (try zds.storage.store.ensureBootstrapInviteCode(allocator, zds.core.config.publicUrl())) |code| { zds.core.log.info("bootstrap invite code: {s}\n", .{code}); } } zds.storage.store.sequenceUnannouncedAccounts(allocator) catch |err| { zds.core.log.err("startup sequence_unannounced_accounts failed err={s}\n", .{@errorName(err)}); }; zds.core.log.info("startup account_setup_ms={d}\n", .{(zds.core.clock.monotonicNs() - storage_ready) / std.time.ns_per_ms}); zds.atproto.sync.notifyCrawlers(true); try zds.http.server.listen(io, .{ .host = options.host, .port = options.port });}