Skip to content

Commit

Permalink
Merge pull request #247 from stokito/exec_shell
Browse files Browse the repository at this point in the history
Exec shell: separate menu item and auto detect shell: bash or sh
  • Loading branch information
mjarkk authored Mar 24, 2021
2 parents 3663fe5 + 2688801 commit fb6b73b
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 2 deletions.
2 changes: 1 addition & 1 deletion docs/Config.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ customCommands:
containers:
- name: bash
attach: true
command: docker exec -it {{ .Container.ID }} /bin/sh
command: "docker exec -it {{ .Container.ID }} /bin/sh -c 'eval $(grep ^$(id -un): /etc/passwd | cut -d : -f 7-)'"
serviceNames: []
oS:
openCommand: open {{filename}}
Expand Down
2 changes: 1 addition & 1 deletion pkg/config/app_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ func GetDefaultConfig() UserConfig {
Containers: []CustomCommand{
{
Name: "bash",
Command: "docker exec -it {{ .Container.ID }} /bin/sh",
Command: "docker exec -it {{ .Container.ID }} /bin/sh -c 'eval $(grep ^$(id -un): /etc/passwd | cut -d : -f 7-)'",
Attach: true,
},
},
Expand Down
15 changes: 15 additions & 0 deletions pkg/gui/containers_panel.go
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,21 @@ func (gui *Gui) handleContainerViewLogs(g *gocui.Gui, v *gocui.View) error {
return gui.Errors.ErrSubProcess
}

func (gui *Gui) handleContainersExecShell(g *gocui.Gui, v *gocui.View) error {
container, err := gui.getSelectedContainer()
if err != nil {
return nil
}
commandObject := gui.DockerCommand.NewCommandObject(commands.CommandObject{
Container: container,
})
resolvedCommand := utils.ApplyTemplate("docker exec -it {{ .Container.ID }} /bin/sh -c 'eval $(grep ^$(id -un): /etc/passwd | cut -d : -f 7-)'", commandObject)
// attach and return the subprocess error
cmd := gui.OSCommand.ExecutableFromString(resolvedCommand)
gui.SubProcess = cmd
return gui.Errors.ErrSubProcess
}

func (gui *Gui) handleContainersCustomCommand(g *gocui.Gui, v *gocui.View) error {
container, err := gui.getSelectedContainer()
if err != nil {
Expand Down
7 changes: 7 additions & 0 deletions pkg/gui/keybindings.go
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Handler: gui.handleContainerViewLogs,
Description: gui.Tr.ViewLogs,
},
{
ViewName: "containers",
Key: 'E',
Modifier: gocui.ModNone,
Handler: gui.handleContainersExecShell,
Description: gui.Tr.ExecShell,
},
{
ViewName: "containers",
Key: 'c',
Expand Down
2 changes: 2 additions & 0 deletions pkg/i18n/english.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ type TranslationSet struct {
StopAllContainers string
RemoveAllContainers string
ViewRestartOptions string
ExecShell string
RunCustomCommand string
ViewBulkCommands string
OpenInBrowser string
Expand Down Expand Up @@ -149,6 +150,7 @@ func englishSet() TranslationSet {
StopAllContainers: "stop all containers",
RemoveAllContainers: "remove all containers (forced)",
ViewRestartOptions: "view restart options",
ExecShell: "exec shell",
RunCustomCommand: "run predefined custom command",
ViewBulkCommands: "view bulk commands",
OpenInBrowser: "open in browser (first port is http)",
Expand Down

0 comments on commit fb6b73b

Please sign in to comment.