diff --git a/src/Config.zig b/src/Config.zig index 629df32b..43ca7566 100644 --- a/src/Config.zig +++ b/src/Config.zig @@ -156,6 +156,13 @@ pub fn userAgentSuffix(self: *const Config) ?[]const u8 { }; } +pub fn cacheDir(self: *const Config) ?[]const u8 { + return switch (self.mode) { + inline .serve, .fetch, .mcp => |opts| opts.common.cache_dir, + else => null, + }; +} + pub fn cdpTimeout(self: *const Config) usize { return switch (self.mode) { .serve => |opts| if (opts.timeout > 604_800) 604_800_000 else @as(usize, opts.timeout) * 1000, @@ -240,6 +247,7 @@ pub const Common = struct { log_format: ?log.Format = null, log_filter_scopes: ?[]log.Scope = null, user_agent_suffix: ?[]const u8 = null, + cache_dir: ?[]const u8 = null, web_bot_auth_key_file: ?[]const u8 = null, web_bot_auth_keyid: ?[]const u8 = null, @@ -907,5 +915,14 @@ fn parseCommonArg( return true; } + if (std.mem.eql(u8, "--cache_dir", opt)) { + const str = args.next() orelse { + log.fatal(.app, "missing argument value", .{ .arg = "--cache_dir" }); + return error.InvalidArgument; + }; + common.cache_dir = try allocator.dupe(u8, str); + return true; + } + return false; }