package backup import ( "fmt" "github.com/spf13/cobra" "git.misaka.ren/M1saka/docker_backup/internal/config" "git.misaka.ren/M1saka/docker_backup/internal/scheduler" ) var daemonCmd = &cobra.Command{ Use: "daemon", Short: "Run as a background daemon with cron scheduling", Long: `Start the backup daemon that runs scheduled backups according to each project's cron expression.`, RunE: runDaemon, } func init() { rootCmd.AddCommand(daemonCmd) } func runDaemon(cmd *cobra.Command, args []string) error { cfg, err := config.Load(cfgFile) if err != nil { return fmt.Errorf("load config: %w", err) } if !cfg.HasCron() { return fmt.Errorf("no projects have cron expressions configured - cannot start daemon") } sched, err := scheduler.New(cfg, dryRun) if err != nil { return fmt.Errorf("create scheduler: %w", err) } fmt.Println("Starting backup daemon...") return sched.Run(cmd.Context()) }