package recipe import ( "strings" "coopcloud.tech/abra/cli/internal" "coopcloud.tech/abra/pkg/autocomplete" "coopcloud.tech/abra/pkg/i18n" "coopcloud.tech/abra/pkg/log" "github.com/go-git/go-git/v5" "github.com/spf13/cobra" ) // translators: `abra recipe reset` aliases. use a comma separated list of // aliases with no spaces in between var recipeResetAliases = i18n.G("rs") var RecipeResetCommand = &cobra.Command{ // translators: `recipe reset` command Use: i18n.G("reset [flags]"), Aliases: strings.Split(recipeResetAliases, ","), // translators: Short description for `recipe reset` command Short: i18n.G("Remove all unstaged changes from recipe config"), Long: i18n.G("WARNING: this will delete your changes. Be Careful."), Args: cobra.ExactArgs(1), ValidArgsFunction: func( cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { return autocomplete.RecipeNameComplete() }, Run: func(cmd *cobra.Command, args []string) { r := internal.ValidateRecipe(args, cmd.Name()) repo, err := git.PlainOpen(r.Dir) if err != nil { log.Fatal(err) } ref, err := repo.Head() if err != nil { log.Fatal(err) } worktree, err := repo.Worktree() if err != nil { log.Fatal(err) } opts := &git.ResetOptions{Commit: ref.Hash(), Mode: git.HardReset} if err := worktree.Reset(opts); err != nil { log.Fatal(err) } }, }