Expose all stack commands to be used by downstream projects.
Factorize orchestrator switch among stack commands. Signed-off-by: Silvin Lubecki <silvin.lubecki@docker.com>
This commit is contained in:
@ -4,6 +4,10 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
"github.com/docker/cli/cli/command"
|
||||
"github.com/docker/cli/cli/command/stack/kubernetes"
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
// validateStackName checks if the provided string is a valid stack name (namespace).
|
||||
@ -29,3 +33,18 @@ func validateStackNames(namespaces []string) error {
|
||||
func quotesOrWhitespace(r rune) bool {
|
||||
return unicode.IsSpace(r) || r == '"' || r == '\''
|
||||
}
|
||||
|
||||
func runOrchestratedCommand(dockerCli command.Cli, flags *pflag.FlagSet, commonOrchestrator command.Orchestrator, swarmCmd func() error, kubernetesCmd func(*kubernetes.KubeCli) error) error {
|
||||
switch {
|
||||
case commonOrchestrator.HasAll():
|
||||
return errUnsupportedAllOrchestrator
|
||||
case commonOrchestrator.HasKubernetes():
|
||||
kli, err := kubernetes.WrapCli(dockerCli, kubernetes.NewOptions(flags, commonOrchestrator))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return kubernetesCmd(kli)
|
||||
default:
|
||||
return swarmCmd()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user