feat(config): load mailbox.json with CLI override in Program

This commit is contained in:
mika kuns
2026-04-24 19:10:54 +02:00
parent 81906e7274
commit 870431d0b8

View File

@@ -7,16 +7,15 @@ if (args.Length > 0 && args[0] is "send" or "peek" or "check" or "list")
return await ClientCommands.RunAsync(args); return await ClientCommands.RunAsync(args);
} }
// Strip the optional leading "serve" verb so WebApplication.CreateBuilder
// doesn't try to treat it as an unknown flag.
var serveArgs = (args.Length > 0 && args[0] == "serve") ? args[1..] : args; var serveArgs = (args.Length > 0 && args[0] == "serve") ? args[1..] : args;
var cfg = new DaemonConfig var explicitConfig = ClientCommands.GetOption(serveArgs, "--config");
{ var defaultConfig = Path.Combine(
Port = ParseInt(serveArgs, "--port", DaemonConfig.DefaultPort), Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
BindAddress = ClientCommands.GetOption(serveArgs, "--bind") ?? DaemonConfig.DefaultBindAddress, "ClaudeMailbox", "mailbox.json");
DbPath = Paths.Expand(ClientCommands.GetOption(serveArgs, "--db-path") ?? Paths.DefaultDbPath()),
}; var fileConfig = FileConfig.Load(explicitConfig, defaultConfig);
var cfg = ConfigResolver.Build(serveArgs, fileConfig);
var builder = ServerHost.CreateBuilder(cfg, serveArgs); var builder = ServerHost.CreateBuilder(cfg, serveArgs);
builder.WebHost.UseUrls(cfg.BaseUrl); builder.WebHost.UseUrls(cfg.BaseUrl);
@@ -38,10 +37,4 @@ catch (IOException ex) when (ex.Message.Contains("address already in use", Strin
return 3; return 3;
} }
static int ParseInt(string[] args, string name, int fallback)
{
var raw = ClientCommands.GetOption(args, name);
return int.TryParse(raw, out var v) ? v : fallback;
}
public partial class Program { } public partial class Program { }