move to subcommand

This commit is contained in:
Michael Eischer 2022-12-10 17:25:38 +01:00
parent a14a63cd29
commit db459eda21
1 changed files with 17 additions and 11 deletions

View File

@ -11,10 +11,15 @@ import (
) )
var cmdRepair = &cobra.Command{ var cmdRepair = &cobra.Command{
Use: "repair [flags] [snapshot ID] [...]", Use: "repair",
Short: "Repair commands",
}
var cmdRepairSnapshots = &cobra.Command{
Use: "snapshots [flags] [snapshot ID] [...]",
Short: "Repair snapshots", Short: "Repair snapshots",
Long: ` Long: `
The "repair" command allows to repair broken snapshots. The "repair snapshots" command allows to repair broken snapshots.
It scans the given snapshots and generates new ones where It scans the given snapshots and generates new ones where
damaged tress and file contents are removed. damaged tress and file contents are removed.
If the broken snapshots are deleted, a prune run will If the broken snapshots are deleted, a prune run will
@ -44,7 +49,7 @@ Exit status is 0 if the command was successful, and non-zero if there was any er
`, `,
DisableAutoGenTag: true, DisableAutoGenTag: true,
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
return runRepair(cmd.Context(), globalOptions, repairOptions, args) return runRepairSnapshots(cmd.Context(), globalOptions, repairSnapshotOptions, args)
}, },
} }
@ -58,21 +63,22 @@ type RepairOptions struct {
DeleteSnapshots bool DeleteSnapshots bool
} }
var repairOptions RepairOptions var repairSnapshotOptions RepairOptions
func init() { func init() {
cmdRoot.AddCommand(cmdRepair) cmdRoot.AddCommand(cmdRepair)
flags := cmdRepair.Flags() cmdRepair.AddCommand(cmdRepairSnapshots)
flags := cmdRepairSnapshots.Flags()
initMultiSnapshotFilter(flags, &repairOptions.SnapshotFilter, true) initMultiSnapshotFilter(flags, &repairSnapshotOptions.SnapshotFilter, true)
flags.StringVar(&repairOptions.AddTag, "add-tag", "repaired", "tag to add to repaired snapshots") flags.StringVar(&repairSnapshotOptions.AddTag, "add-tag", "repaired", "tag to add to repaired snapshots")
flags.StringVar(&repairOptions.Append, "append", ".repaired", "string to append to repaired dirs/files; remove files if empty or impossible to repair") flags.StringVar(&repairSnapshotOptions.Append, "append", ".repaired", "string to append to repaired dirs/files; remove files if empty or impossible to repair")
flags.BoolVarP(&repairOptions.DryRun, "dry-run", "n", true, "don't do anything, only show what would be done") flags.BoolVarP(&repairSnapshotOptions.DryRun, "dry-run", "n", true, "don't do anything, only show what would be done")
flags.BoolVar(&repairOptions.DeleteSnapshots, "delete-snapshots", false, "delete original snapshots") flags.BoolVar(&repairSnapshotOptions.DeleteSnapshots, "delete-snapshots", false, "delete original snapshots")
} }
func runRepair(ctx context.Context, gopts GlobalOptions, opts RepairOptions, args []string) error { func runRepairSnapshots(ctx context.Context, gopts GlobalOptions, opts RepairOptions, args []string) error {
switch { switch {
case opts.DryRun: case opts.DryRun:
Printf("\n note: --dry-run is set\n-> repair will only show what it would do.\n\n") Printf("\n note: --dry-run is set\n-> repair will only show what it would do.\n\n")