feat: docker compose backup
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
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())
|
||||
}
|
||||
Reference in New Issue
Block a user