Files
2026-07-04 17:20:28 +08:00

39 lines
922 B
Go

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())
}