package cmd

import (
  "fmt"

  "git.metaunix.net/bitgoblin/goblin-store/lib/backup"
  "git.metaunix.net/bitgoblin/goblin-store/lib/config"

  "github.com/spf13/cobra"
  "github.com/spf13/viper"
)

var backupCloudCmd = &cobra.Command{
  Use:   "cloud",
  Short: "Run cloud forward-incremental backup (via Rclone)",
  Long:  `Uploads changes to a remote or cloud destination using Rclone with forward-incremental backup retention.`,
  RunE: func(cmd *cobra.Command, args []string) error {
    cfg, err := config.Load()
    if err != nil {
      return fmt.Errorf("configuration error: %w", err)
    }

    return backup.RunIncrementalBackup(cmd.Context(), cfg)
  },
}

func init() {
  backupCmd.AddCommand(backupCloudCmd)

  // --workers is defined locally here so it only applies to cloud operations
  backupCloudCmd.Flags().IntP("workers", "w", 4, "number of concurrent transfer threads")
  _ = viper.BindPFlag("workers", backupCloudCmd.Flags().Lookup("workers"))
}