diff options
Diffstat (limited to 'internal/config/config.go')
| -rw-r--r-- | internal/config/config.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..da7f264 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,41 @@ +package config + +import ( + "os" + "path/filepath" +) + +type Config struct { + DataDir string `toml:"data_dir"` + DBPath string `toml:"-"` + LogDir string `toml:"-"` + ClaudeBinaryPath string `toml:"claude_binary_path"` + MaxConcurrent int `toml:"max_concurrent"` + DefaultTimeout string `toml:"default_timeout"` + ServerAddr string `toml:"server_addr"` + WebhookURL string `toml:"webhook_url"` +} + +func Default() *Config { + home, _ := os.UserHomeDir() + dataDir := filepath.Join(home, ".claudomator") + return &Config{ + DataDir: dataDir, + DBPath: filepath.Join(dataDir, "claudomator.db"), + LogDir: filepath.Join(dataDir, "executions"), + ClaudeBinaryPath: "claude", + MaxConcurrent: 3, + DefaultTimeout: "15m", + ServerAddr: ":8484", + } +} + +// EnsureDirs creates the data directory structure. +func (c *Config) EnsureDirs() error { + for _, dir := range []string{c.DataDir, c.LogDir} { + if err := os.MkdirAll(dir, 0700); err != nil { + return err + } + } + return nil +} |
