forked from toolshed/abra
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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 <recipe> [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)
 | 
						|
		}
 | 
						|
	},
 | 
						|
}
 |