diff --git a/docs/Config.md b/docs/Config.md index fecb7d3c..6e77a94a 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -43,6 +43,7 @@ commandTemplates: dockerCompose: docker-compose restartService: '{{ .DockerCompose }} restart {{ .Service.Name }}' startService: '{{ .DockerCompose }} start {{ .Service.Name }}' + upService: '{{ .DockerCompose }} up -d {{ .Service.Name }}' stopService: '{{ .DockerCompose }} stop {{ .Service.Name }}' serviceLogs: '{{ .DockerCompose }} logs --since=60m --follow {{ .Service.Name }}' viewServiceLogs: '{{ .DockerCompose }} logs --follow {{ .Service.Name }}' diff --git a/docs/keybindings/Keybindings_de.md b/docs/keybindings/Keybindings_de.md index 458cf793..b28837b1 100644 --- a/docs/keybindings/Keybindings_de.md +++ b/docs/keybindings/Keybindings_de.md @@ -35,6 +35,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct ## Dienste
+ u: up service d: entferne Container s: anhalten p: pause diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md index dd0925e2..86f1b8cf 100644 --- a/docs/keybindings/Keybindings_en.md +++ b/docs/keybindings/Keybindings_en.md @@ -35,6 +35,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct ## Services+ u: up service d: remove containers s: stop p: pause diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md index 00dc7f88..17077899 100644 --- a/docs/keybindings/Keybindings_nl.md +++ b/docs/keybindings/Keybindings_nl.md @@ -35,6 +35,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct ## Diensten+ u: up service d: verwijder containers s: stop p: pause diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md index 174beb15..08b89c5b 100644 --- a/docs/keybindings/Keybindings_pl.md +++ b/docs/keybindings/Keybindings_pl.md @@ -35,6 +35,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct ## Serwisy+ u: up service d: usuń kontenery s: zatrzymaj p: pause diff --git a/docs/keybindings/Keybindings_tr.md b/docs/keybindings/Keybindings_tr.md index bb83faee..263db57b 100644 --- a/docs/keybindings/Keybindings_tr.md +++ b/docs/keybindings/Keybindings_tr.md @@ -35,6 +35,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct ## Servisler+ u: up service d: konteynerleri kaldır s: durdur p: pause diff --git a/pkg/commands/service.go b/pkg/commands/service.go index f45146bc..2918b339 100644 --- a/pkg/commands/service.go +++ b/pkg/commands/service.go @@ -38,29 +38,27 @@ func (s *Service) Remove(options types.ContainerRemoveOptions) error { // Stop stops the service's containers func (s *Service) Stop() error { - templateString := s.OSCommand.Config.UserConfig.CommandTemplates.StopService - command := utils.ApplyTemplate( - templateString, - s.DockerCommand.NewCommandObject(CommandObject{Service: s}), - ) - return s.OSCommand.RunCommand(command) + return s.runCommand(s.OSCommand.Config.UserConfig.CommandTemplates.StopService) +} + +// Up up's the service +func (s *Service) Up() error { + return s.runCommand(s.OSCommand.Config.UserConfig.CommandTemplates.UpService) } // Restart restarts the service func (s *Service) Restart() error { - templateString := s.OSCommand.Config.UserConfig.CommandTemplates.RestartService - command := utils.ApplyTemplate( - templateString, - s.DockerCommand.NewCommandObject(CommandObject{Service: s}), - ) - return s.OSCommand.RunCommand(command) + return s.runCommand(s.OSCommand.Config.UserConfig.CommandTemplates.RestartService) } // Restart starts the service func (s *Service) Start() error { - templateString := s.OSCommand.Config.UserConfig.CommandTemplates.StartService + return s.runCommand(s.OSCommand.Config.UserConfig.CommandTemplates.StartService) +} + +func (s *Service) runCommand(templateCmdStr string) error { command := utils.ApplyTemplate( - templateString, + templateCmdStr, s.DockerCommand.NewCommandObject(CommandObject{Service: s}), ) return s.OSCommand.RunCommand(command) diff --git a/pkg/config/app_config.go b/pkg/config/app_config.go index 78064067..a68cb444 100644 --- a/pkg/config/app_config.go +++ b/pkg/config/app_config.go @@ -138,6 +138,9 @@ type CommandTemplatesConfig struct { // StartService is just like the above but for starting StartService string `yaml:"startService,omitempty"` + // UpService ups the service (creates and starts) + UpService string `yaml:"upService,omitempty"` + // DockerCompose is for your docker-compose command. You may want to combine a // few different docker-compose.yml files together, in which case you can set // this to "docker-compose -f foo/docker-compose.yml -f @@ -348,6 +351,7 @@ func GetDefaultConfig() UserConfig { DockerCompose: "docker-compose", RestartService: "{{ .DockerCompose }} restart {{ .Service.Name }}", StartService: "{{ .DockerCompose }} start {{ .Service.Name }}", + UpService: "{{ .DockerCompose }} up -d {{ .Service.Name }}", RebuildService: "{{ .DockerCompose }} up -d --build {{ .Service.Name }}", RecreateService: "{{ .DockerCompose }} up -d --force-recreate {{ .Service.Name }}", StopService: "{{ .DockerCompose }} stop {{ .Service.Name }}", diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 05ce3498..54a6b7e7 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -283,6 +283,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { Handler: gui.handleContainersOpenInBrowserCommand, Description: gui.Tr.OpenInBrowser, }, + { + ViewName: "services", + Key: 'u', + Modifier: gocui.ModNone, + Handler: gui.handleServiceUp, + Description: gui.Tr.UpService, + }, { ViewName: "services", Key: 'd', diff --git a/pkg/gui/services_panel.go b/pkg/gui/services_panel.go index 76d0116b..67cb3613 100644 --- a/pkg/gui/services_panel.go +++ b/pkg/gui/services_panel.go @@ -248,6 +248,19 @@ func (gui *Gui) handleServiceStop(g *gocui.Gui, v *gocui.View) error { }, nil) } +func (gui *Gui) handleServiceUp(g *gocui.Gui, v *gocui.View) error { + service, err := gui.getSelectedService() + if err != nil { + return nil + } + + if err := service.Up(); err != nil { + return gui.createErrorPanel(err.Error()) + } + + return nil +} + func (gui *Gui) handleServiceRestart(g *gocui.Gui, v *gocui.View) error { service, err := gui.getSelectedService() if err != nil { diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 9f225c4d..eed1fcb4 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -46,6 +46,7 @@ type TranslationSet struct { RunningCustomCommandStatus string RunningBulkCommandStatus string RemoveService string + UpService string Stop string Pause string Restart string @@ -149,6 +150,7 @@ func englishSet() TranslationSet { ForceRemove: "force remove", RemoveWithVolumes: "remove with volumes", RemoveService: "remove containers", + UpService: "up service", Stop: "stop", Pause: "pause", Restart: "restart",