P3.1: Add ExecutionMode/OverlapPolicy to Config; add Pending to JobRuntime
Introduces ExecutionMode (parallel/sequential) and OverlapPolicy (skip/queue) types and constants in domain/config.go, wires defaults (parallel/skip) into loadOrCreateConfig and the normalization pass, and adds validation in validateConfig. Adds Pending bool to JobRuntime as the flag P3.3 will use to re-run a queued overlap. Marks P3.1 done. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+17
-7
@@ -24,13 +24,15 @@ type Store struct {
|
||||
// domain struct so the value conversions in importYAMLConfig / importYAMLJobs
|
||||
// remain valid.
|
||||
type yamlConfig struct {
|
||||
JobsDir string `yaml:"jobs_dir"`
|
||||
LogsDir string `yaml:"logs_dir"`
|
||||
MaxLogFiles int `yaml:"max_log_files"`
|
||||
MaxLogAgeDays int `yaml:"max_log_age_days"`
|
||||
StartOnLogin bool `yaml:"start_on_login,omitempty"`
|
||||
KeepRunningInTray bool `yaml:"keep_running_in_tray,omitempty"`
|
||||
NotifyOnFailure bool `yaml:"notify_on_failure,omitempty"`
|
||||
JobsDir string `yaml:"jobs_dir"`
|
||||
LogsDir string `yaml:"logs_dir"`
|
||||
MaxLogFiles int `yaml:"max_log_files"`
|
||||
MaxLogAgeDays int `yaml:"max_log_age_days"`
|
||||
StartOnLogin bool `yaml:"start_on_login,omitempty"`
|
||||
KeepRunningInTray bool `yaml:"keep_running_in_tray,omitempty"`
|
||||
NotifyOnFailure bool `yaml:"notify_on_failure,omitempty"`
|
||||
ExecutionMode domain.ExecutionMode `yaml:"execution_mode,omitempty"`
|
||||
OverlapPolicy domain.OverlapPolicy `yaml:"overlap_policy,omitempty"`
|
||||
}
|
||||
|
||||
type yamlJob struct {
|
||||
@@ -108,6 +110,8 @@ func loadOrCreateConfig(paths Paths) (domain.Config, error) {
|
||||
StartOnLogin: false,
|
||||
KeepRunningInTray: true,
|
||||
NotifyOnFailure: true,
|
||||
ExecutionMode: domain.ExecutionModeParallel,
|
||||
OverlapPolicy: domain.OverlapPolicySkip,
|
||||
}
|
||||
|
||||
if _, err := os.Stat(paths.ConfigPath); errors.Is(err, os.ErrNotExist) {
|
||||
@@ -147,6 +151,12 @@ func loadOrCreateConfig(paths Paths) (domain.Config, error) {
|
||||
if config.MaxLogAgeDays <= 0 {
|
||||
config.MaxLogAgeDays = 30
|
||||
}
|
||||
if config.ExecutionMode == "" {
|
||||
config.ExecutionMode = domain.ExecutionModeParallel
|
||||
}
|
||||
if config.OverlapPolicy == "" {
|
||||
config.OverlapPolicy = domain.OverlapPolicySkip
|
||||
}
|
||||
return config, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user