Skip to content

Commit b25eaeb

Browse files
committed
Add prompt for devcontainer on exec
1 parent c4e1632 commit b25eaeb

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

cmd/devcontainer/devcontainer.go

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func createExecCommand() *cobra.Command {
6666
cmd := &cobra.Command{
6767
Use: "exec DEVCONTAINER_NAME COMMAND [args...]",
6868
Short: "Execute a command in a devcontainer",
69-
Long: "Execute a command in a devcontainer, similar to `docker exec`.",
69+
Long: "Execute a command in a devcontainer, similar to `docker exec`. Pass `?` as DEVCONTAINER_NAME to be prompted.",
7070
RunE: func(cmd *cobra.Command, args []string) error {
7171

7272
if len(args) < 2 {
@@ -80,14 +80,28 @@ func createExecCommand() *cobra.Command {
8080
}
8181

8282
containerID := ""
83-
for _, devcontainer := range devcontainers {
84-
if devcontainer.ContainerName == devcontainerName || devcontainer.DevcontainerName == devcontainerName {
85-
containerID = devcontainer.ContainerID
86-
break
83+
if devcontainerName == "?" {
84+
// prompt user
85+
fmt.Println("Specify the devcontainer to use:")
86+
for index, devcontainer := range devcontainers {
87+
fmt.Printf("%4d: %s (%s)\n", index, devcontainer.DevcontainerName, devcontainer.ContainerName)
88+
}
89+
selection := -1
90+
_, _ = fmt.Scanf("%d", &selection)
91+
if selection < 0 || selection >= len(devcontainers) {
92+
return fmt.Errorf("Invalid option")
93+
}
94+
containerID = devcontainers[selection].ContainerID
95+
} else {
96+
for _, devcontainer := range devcontainers {
97+
if devcontainer.ContainerName == devcontainerName || devcontainer.DevcontainerName == devcontainerName {
98+
containerID = devcontainer.ContainerID
99+
break
100+
}
101+
}
102+
if containerID == "" {
103+
return cmd.Usage()
87104
}
88-
}
89-
if containerID == "" {
90-
return cmd.Usage()
91105
}
92106

93107
dockerArgs := []string{"exec", "-it", containerID}

0 commit comments

Comments
 (0)