package recipe import ( "coopcloud.tech/abra/cli/internal" "coopcloud.tech/abra/pkg/autocomplete" "coopcloud.tech/abra/pkg/log" "coopcloud.tech/abra/pkg/recipe" "github.com/go-git/go-git/v5" "github.com/urfave/cli" ) var recipeResetCommand = cli.Command{ Name: "reset", Usage: "Remove all unstaged changes from recipe config", Description: "WARNING: this will delete your changes. Be Careful.", Aliases: []string{"rs"}, ArgsUsage: "", Flags: []cli.Flag{ internal.DebugFlag, internal.NoInputFlag, }, Before: internal.SubCommandBefore, BashComplete: autocomplete.RecipeNameComplete, Action: func(c *cli.Context) error { recipeName := c.Args().First() r := recipe.Get(recipeName) if recipeName != "" { internal.ValidateRecipe(c) } 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) } return nil }, }