diff options
Diffstat (limited to 'internal/cli')
| -rw-r--r-- | internal/cli/root.go | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/internal/cli/root.go b/internal/cli/root.go index e57a9d9..2cc8f71 100644 --- a/internal/cli/root.go +++ b/internal/cli/root.go @@ -38,18 +38,27 @@ func NewRootCmd() *cobra.Command { cmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output") // Re-derive DBPath and LogDir after flags are parsed, so --data-dir takes effect. - // If --config is provided, load that file first; explicit CLI flags override it. + // Load config file: explicit --config flag, then default location, then defaults-only. cmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error { - if cfgFile != "" { + filePath := cfgFile + if filePath == "" { + home, _ := os.UserHomeDir() + filePath = filepath.Join(home, ".claudomator", "config.toml") + } + + if filePath != "" { // Save values set by explicit CLI flags before overwriting cfg from file. flagDataDir := cfg.DataDir flagClaudeBin := cfg.ClaudeBinaryPath - loaded, err := config.LoadFile(cfgFile) - if err != nil { + loaded, err := config.LoadFile(filePath) + if err != nil && cfgFile != "" { + // Only hard-fail if the file was explicitly specified. return err } - *cfg = *loaded + if err == nil { + *cfg = *loaded + } if cmd.Flags().Changed("data-dir") { cfg.DataDir = flagDataDir |
