From 5de735f1acc807fbb41478501f8cafb0bb8086d1 Mon Sep 17 00:00:00 2001 From: Cesar Andres Date: Thu, 13 Feb 2025 13:54:14 +0100 Subject: [PATCH] feat(submodules): add method to bulk init and update submodules --- pkg/commands/git_commands/submodule.go | 7 +++++++ pkg/gui/controllers/submodules_controller.go | 14 ++++++++++++++ pkg/i18n/english.go | 4 ++++ 3 files changed, 25 insertions(+) diff --git a/pkg/commands/git_commands/submodule.go b/pkg/commands/git_commands/submodule.go index 40a0d3509..2f8c887c8 100644 --- a/pkg/commands/git_commands/submodule.go +++ b/pkg/commands/git_commands/submodule.go @@ -258,6 +258,13 @@ func (self *SubmoduleCommands) ForceBulkUpdateCmdObj() oscommands.ICmdObj { return self.cmd.New(cmdArgs) } +func (self *SubmoduleCommands) BulkUpdateRecursivelyCmdObj() oscommands.ICmdObj { + cmdArgs := NewGitCmd("submodule").Arg("update", "--init", "--recursive"). + ToArgv() + + return self.cmd.New(cmdArgs) +} + func (self *SubmoduleCommands) BulkDeinitCmdObj() oscommands.ICmdObj { cmdArgs := NewGitCmd("submodule").Arg("deinit", "--all", "--force"). ToArgv() diff --git a/pkg/gui/controllers/submodules_controller.go b/pkg/gui/controllers/submodules_controller.go index 44fd9d949..eb98c1656 100644 --- a/pkg/gui/controllers/submodules_controller.go +++ b/pkg/gui/controllers/submodules_controller.go @@ -247,6 +247,20 @@ func (self *SubmodulesController) openBulkActionsMenu() error { }, Key: 'u', }, + { + LabelColumns: []string{self.c.Tr.BulkUpdateRecursiveSubmodules, style.FgYellow.Sprint(self.c.Git().Submodule.BulkUpdateRecursivelyCmdObj().ToString())}, + OnPress: func() error { + return self.c.WithWaitingStatus(self.c.Tr.RunningCommand, func(gocui.Task) error { + self.c.LogAction(self.c.Tr.Actions.BulkUpdateRecursiveSubmodules) + if err := self.c.Git().Submodule.BulkUpdateRecursivelyCmdObj().Run(); err != nil { + return err + } + + return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}}) + }) + }, + Key: 'r', + }, { LabelColumns: []string{self.c.Tr.BulkDeinitSubmodules, style.FgRed.Sprint(self.c.Git().Submodule.BulkDeinitCmdObj().ToString())}, OnPress: func() error { diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index ca46d7502..c3bcb3da4 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -673,6 +673,7 @@ type TranslationSet struct { BulkInitSubmodules string BulkUpdateSubmodules string BulkDeinitSubmodules string + BulkUpdateRecursiveSubmodules string ViewBulkSubmoduleOptions string BulkSubmoduleOptions string RunningCommand string @@ -982,6 +983,7 @@ type Actions struct { BulkInitialiseSubmodules string BulkUpdateSubmodules string BulkDeinitialiseSubmodules string + BulkUpdateRecursiveSubmodules string UpdateSubmodule string CreateLightweightTag string CreateAnnotatedTag string @@ -1718,6 +1720,7 @@ func EnglishTranslationSet() *TranslationSet { BulkInitSubmodules: "Bulk init submodules", BulkUpdateSubmodules: "Bulk update submodules", BulkDeinitSubmodules: "Bulk deinit submodules", + BulkUpdateRecursiveSubmodules: "Bulk init and update submodules recursively", ViewBulkSubmoduleOptions: "View bulk submodule options", BulkSubmoduleOptions: "Bulk submodule options", RunningCommand: "Running command", @@ -1989,6 +1992,7 @@ func EnglishTranslationSet() *TranslationSet { BulkInitialiseSubmodules: "Bulk initialise submodules", BulkUpdateSubmodules: "Bulk update submodules", BulkDeinitialiseSubmodules: "Bulk deinitialise submodules", + BulkUpdateRecursiveSubmodules: "Bulk initialise and update submodules recursively", UpdateSubmodule: "Update submodule", DeleteLocalTag: "Delete local tag", DeleteRemoteTag: "Delete remote tag",