mirror of
https://github.com/containers/podman.git
synced 2025-06-24 11:28:24 +08:00
podman machine shell completion
Add shell completion for machine names. [NO TESTS NEEDED] I would like to add one to the shell completion test however using podman machine init is to expensive. Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
This commit is contained in:
@ -1092,11 +1092,3 @@ func AutocompleteVolumeFilters(cmd *cobra.Command, args []string, toComplete str
|
|||||||
}
|
}
|
||||||
return completeKeyValues(toComplete, kv)
|
return completeKeyValues(toComplete, kv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AutocompleteMachineSSH - Autocomplete machine ssh command.
|
|
||||||
func AutocompleteMachineSSH(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
|
||||||
if len(args) == 0 {
|
|
||||||
return nil, cobra.ShellCompDirectiveNoFileComp
|
|
||||||
}
|
|
||||||
return nil, cobra.ShellCompDirectiveDefault
|
|
||||||
}
|
|
||||||
|
@ -3,9 +3,13 @@
|
|||||||
package machine
|
package machine
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/containers/podman/v3/cmd/podman/registry"
|
"github.com/containers/podman/v3/cmd/podman/registry"
|
||||||
"github.com/containers/podman/v3/cmd/podman/validate"
|
"github.com/containers/podman/v3/cmd/podman/validate"
|
||||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||||
|
"github.com/containers/podman/v3/pkg/machine"
|
||||||
|
"github.com/containers/podman/v3/pkg/machine/qemu"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -30,3 +34,34 @@ func init() {
|
|||||||
Command: machineCmd,
|
Command: machineCmd,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// autocompleteMachineSSH - Autocomplete machine ssh command.
|
||||||
|
func autocompleteMachineSSH(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||||
|
if len(args) == 0 {
|
||||||
|
return getMachines(toComplete)
|
||||||
|
}
|
||||||
|
return nil, cobra.ShellCompDirectiveDefault
|
||||||
|
}
|
||||||
|
|
||||||
|
// autocompleteMachine - Autocomplete machines.
|
||||||
|
func autocompleteMachine(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||||
|
if len(args) == 0 {
|
||||||
|
return getMachines(toComplete)
|
||||||
|
}
|
||||||
|
return nil, cobra.ShellCompDirectiveNoFileComp
|
||||||
|
}
|
||||||
|
|
||||||
|
func getMachines(toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||||
|
suggestions := []string{}
|
||||||
|
machines, err := qemu.List(machine.ListOptions{})
|
||||||
|
if err != nil {
|
||||||
|
cobra.CompErrorln(err.Error())
|
||||||
|
return nil, cobra.ShellCompDirectiveNoFileComp
|
||||||
|
}
|
||||||
|
for _, m := range machines {
|
||||||
|
if strings.HasPrefix(m.Name, toComplete) {
|
||||||
|
suggestions = append(suggestions, m.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return suggestions, cobra.ShellCompDirectiveNoFileComp
|
||||||
|
}
|
||||||
|
@ -8,7 +8,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/containers/common/pkg/completion"
|
|
||||||
"github.com/containers/podman/v3/cmd/podman/registry"
|
"github.com/containers/podman/v3/cmd/podman/registry"
|
||||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||||
"github.com/containers/podman/v3/pkg/machine"
|
"github.com/containers/podman/v3/pkg/machine"
|
||||||
@ -18,13 +17,13 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
rmCmd = &cobra.Command{
|
rmCmd = &cobra.Command{
|
||||||
Use: "rm [options] [NAME]",
|
Use: "rm [options] [MACHINE]",
|
||||||
Short: "Remove an existing machine",
|
Short: "Remove an existing machine",
|
||||||
Long: "Remove an existing machine ",
|
Long: "Remove an existing machine ",
|
||||||
RunE: rm,
|
RunE: rm,
|
||||||
Args: cobra.MaximumNArgs(1),
|
Args: cobra.MaximumNArgs(1),
|
||||||
Example: `podman machine rm myvm`,
|
Example: `podman machine rm myvm`,
|
||||||
ValidArgsFunction: completion.AutocompleteNone,
|
ValidArgsFunction: autocompleteMachine,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
package machine
|
package machine
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/containers/podman/v3/cmd/podman/common"
|
|
||||||
"github.com/containers/podman/v3/cmd/podman/registry"
|
"github.com/containers/podman/v3/cmd/podman/registry"
|
||||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||||
"github.com/containers/podman/v3/pkg/machine"
|
"github.com/containers/podman/v3/pkg/machine"
|
||||||
@ -14,7 +13,7 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
sshCmd = &cobra.Command{
|
sshCmd = &cobra.Command{
|
||||||
Use: "ssh [options] [NAME] [COMMAND [ARG ...]]",
|
Use: "ssh [options] [MACHINE] [COMMAND [ARG ...]]",
|
||||||
Short: "SSH into a virtual machine",
|
Short: "SSH into a virtual machine",
|
||||||
Long: "SSH into a virtual machine ",
|
Long: "SSH into a virtual machine ",
|
||||||
RunE: ssh,
|
RunE: ssh,
|
||||||
@ -22,7 +21,7 @@ var (
|
|||||||
Example: `podman machine ssh myvm
|
Example: `podman machine ssh myvm
|
||||||
podman machine ssh -e myvm echo hello`,
|
podman machine ssh -e myvm echo hello`,
|
||||||
|
|
||||||
ValidArgsFunction: common.AutocompleteMachineSSH,
|
ValidArgsFunction: autocompleteMachineSSH,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
package machine
|
package machine
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/containers/common/pkg/completion"
|
|
||||||
"github.com/containers/podman/v3/cmd/podman/registry"
|
"github.com/containers/podman/v3/cmd/podman/registry"
|
||||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||||
"github.com/containers/podman/v3/pkg/machine"
|
"github.com/containers/podman/v3/pkg/machine"
|
||||||
@ -13,13 +12,13 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
startCmd = &cobra.Command{
|
startCmd = &cobra.Command{
|
||||||
Use: "start [NAME]",
|
Use: "start [MACHINE]",
|
||||||
Short: "Start an existing machine",
|
Short: "Start an existing machine",
|
||||||
Long: "Start an existing machine ",
|
Long: "Start an existing machine ",
|
||||||
RunE: start,
|
RunE: start,
|
||||||
Args: cobra.MaximumNArgs(1),
|
Args: cobra.MaximumNArgs(1),
|
||||||
Example: `podman machine start myvm`,
|
Example: `podman machine start myvm`,
|
||||||
ValidArgsFunction: completion.AutocompleteNone,
|
ValidArgsFunction: autocompleteMachine,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
package machine
|
package machine
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/containers/common/pkg/completion"
|
|
||||||
"github.com/containers/podman/v3/cmd/podman/registry"
|
"github.com/containers/podman/v3/cmd/podman/registry"
|
||||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||||
"github.com/containers/podman/v3/pkg/machine"
|
"github.com/containers/podman/v3/pkg/machine"
|
||||||
@ -13,13 +12,13 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
stopCmd = &cobra.Command{
|
stopCmd = &cobra.Command{
|
||||||
Use: "stop [NAME]",
|
Use: "stop [MACHINE]",
|
||||||
Short: "Stop an existing machine",
|
Short: "Stop an existing machine",
|
||||||
Long: "Stop an existing machine ",
|
Long: "Stop an existing machine ",
|
||||||
RunE: stop,
|
RunE: stop,
|
||||||
Args: cobra.MaximumNArgs(1),
|
Args: cobra.MaximumNArgs(1),
|
||||||
Example: `podman machine stop myvm`,
|
Example: `podman machine stop myvm`,
|
||||||
ValidArgsFunction: completion.AutocompleteNone,
|
ValidArgsFunction: autocompleteMachine,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user