From fe208b3b4279712e0e78fb6ff6172225649fac4f Mon Sep 17 00:00:00 2001 From: Format_C_eft Date: Sat, 12 Nov 2022 21:29:47 +0500 Subject: [PATCH] add git reset command --- internal/cmd/dto.go | 1 + internal/cmd/init.go | 9 +++++---- internal/cmd/run.go | 15 +++++++++++++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/internal/cmd/dto.go b/internal/cmd/dto.go index dcc7c34..ff43b02 100644 --- a/internal/cmd/dto.go +++ b/internal/cmd/dto.go @@ -17,6 +17,7 @@ var ( flagCheckout bool flagFetch bool flagPull bool + flagResetHard bool flagDefaultBranch string flagExecuteTimeout *time.Duration diff --git a/internal/cmd/init.go b/internal/cmd/init.go index de15d9d..12e210a 100644 --- a/internal/cmd/init.go +++ b/internal/cmd/init.go @@ -15,14 +15,15 @@ var rootCmd = &cobra.Command{ } func init() { - rootCmd.Version = "v0.0.1-alpha1" + rootCmd.Version = "v0.0.1" rootCmd.Flags().StringVarP(&flagDir, "dir", "d", "../", "Путь к каталогу с проектами") rootCmd.Flags().StringVarP(&flagDefaultBranch, "branch", "b", "master", "Наименование ветки: master/main") rootCmd.Flags().BoolVarP(&flagAll, "all", "a", false, "Выполнить все шаги checkout master, fetch, pull") - rootCmd.Flags().BoolVarP(&flagAll, "checkout", "c", false, "Выполнить checkout master") - rootCmd.Flags().BoolVarP(&flagAll, "fetch", "f", false, "Выполнить fetch") - rootCmd.Flags().BoolVarP(&flagAll, "pull", "p", false, "Выполнить pull") + rootCmd.Flags().BoolVarP(&flagCheckout, "checkout", "c", false, "Выполнить checkout master") + rootCmd.Flags().BoolVarP(&flagFetch, "fetch", "f", false, "Выполнить fetch") + rootCmd.Flags().BoolVarP(&flagPull, "pull", "p", false, "Выполнить pull") + rootCmd.Flags().BoolVarP(&flagResetHard, "reset-hard", "r", false, "При необходимости перед git checkout выполнить git reset --hard") flagExecuteTimeout = rootCmd.Flags().DurationP("execute_timeout", "e", time.Second*30, "Максимальное время обработки одного каталога") } diff --git a/internal/cmd/run.go b/internal/cmd/run.go index d6c2e60..04f46d6 100644 --- a/internal/cmd/run.go +++ b/internal/cmd/run.go @@ -103,8 +103,18 @@ func processDir(dir string, ch chan resultLogChan) { } if !strings.Contains(string(res), gitStatusOk) { - resultLogs.AddLog("skipped: there are uncommitted changes") - return + resultLogs.AddLog("find uncommitted changes") + + if !flagResetHard { + resultLogs.AddLog("skipped: there are uncommitted changes") + return + } + + if _, err := shell_executor.Run(ctx, dir, "git", "reset", "--hard"); err != nil { + resultLogs.AddLog("error: git reset --hard: " + err.Error()) + return + } + resultLogs.AddLog("success: git reset --hard") } if _, err := shell_executor.Run(ctx, dir, "git", "checkout", flagDefaultBranch); err != nil { @@ -124,4 +134,5 @@ func processDir(dir string, ch chan resultLogChan) { return } resultLogs.AddLog("success: git pull") + }