summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/cli/root.go19
-rw-r--r--internal/task/validator.go3
2 files changed, 14 insertions, 8 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
diff --git a/internal/task/validator.go b/internal/task/validator.go
index 43e482e..003fab9 100644
--- a/internal/task/validator.go
+++ b/internal/task/validator.go
@@ -29,9 +29,6 @@ func Validate(t *Task) error {
if t.Name == "" {
ve.Add("name is required")
}
- if t.RepositoryURL == "" {
- ve.Add("repository_url is required")
- }
if t.Agent.Instructions == "" {
ve.Add("agent.instructions is required")
}