diff --git a/extra/completions/_stackablectl b/extra/completions/_stackablectl index e97a0b96..e3c334fd 100644 --- a/extra/completions/_stackablectl +++ b/extra/completions/_stackablectl @@ -17,14 +17,12 @@ _stackablectl() { _arguments "${_arguments_options[@]}" \ '-l+[Log level this application uses]:LOG_LEVEL: ' \ '--log-level=[Log level this application uses]:LOG_LEVEL: ' \ -'-n+[Namespace in the cluster used to deploy the products and operators]:OPERATOR_NAMESPACE: ' \ -'--operator-namespace=[Namespace in the cluster used to deploy the products and operators]:OPERATOR_NAMESPACE: ' \ -'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILES:_files' \ -'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILES:_files' \ -'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILES:_files' \ -'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILES:_files' \ -'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILES:_files' \ -'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILES:_files' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ '--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ '--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ '--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ @@ -45,8 +43,21 @@ _stackablectl() { case $line[1] in (operator) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ ":: :_stackablectl__operator_commands" \ @@ -67,6 +78,19 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -81,6 +105,19 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -90,6 +127,8 @@ yaml\:"Print output formatted as YAML"))' \ ;; (install) _arguments "${_arguments_options[@]}" \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ '-c+[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ '--cluster=[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " @@ -97,6 +136,19 @@ minikube\:"Use a minikube cluster"))' \ '--cluster-name=[Name of the local cluster]:CLUSTER_NAME: ' \ '--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES: ' \ '--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -106,8 +158,23 @@ minikube\:"Use a minikube cluster"))' \ ;; (uninstall) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ '*::operators -- One or more operators to uninstall:' \ @@ -121,6 +188,21 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -173,8 +255,21 @@ esac ;; (release) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ ":: :_stackablectl__release_commands" \ @@ -195,6 +290,19 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -209,6 +317,19 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -222,6 +343,8 @@ _arguments "${_arguments_options[@]}" \ '*--include=[Whitelist of product operators to install]:INCLUDED_PRODUCTS: ' \ '*-e+[Blacklist of product operators to install]:EXCLUDED_PRODUCTS: ' \ '*--exclude=[Blacklist of product operators to install]:EXCLUDED_PRODUCTS: ' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ '-c+[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ '--cluster=[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " @@ -229,6 +352,19 @@ minikube\:"Use a minikube cluster"))' \ '--cluster-name=[Name of the local cluster]:CLUSTER_NAME: ' \ '--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES: ' \ '--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -238,8 +374,23 @@ minikube\:"Use a minikube cluster"))' \ ;; (uninstall) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'--operator-namespace=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace in the cluster used to deploy the operators]:OPERATOR_NAMESPACE: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ ':RELEASE -- Name of the release to uninstall:' \ @@ -287,8 +438,21 @@ esac ;; (stack) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ ":: :_stackablectl__stack_commands" \ @@ -309,6 +473,19 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -323,6 +500,19 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -332,9 +522,7 @@ yaml\:"Print output formatted as YAML"))' \ ;; (install) _arguments "${_arguments_options[@]}" \ -'*-s+[List of parameters to use when installing the stack]:STACK_PARAMETERS: ' \ '*--stack-parameters=[List of parameters to use when installing the stack]:STACK_PARAMETERS: ' \ -'*-p+[List of parameters to use when installing the stack]:PARAMETERS: ' \ '*--parameters=[List of parameters to use when installing the stack]:PARAMETERS: ' \ '-c+[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ @@ -343,6 +531,25 @@ minikube\:"Use a minikube cluster"))' \ '--cluster-name=[Name of the local cluster]:CLUSTER_NAME: ' \ '--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES: ' \ '--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ +'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ +'-n+[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'--product-namespace=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'--product-ns=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--skip-release[Skip the installation of the release during the stack install process]' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -388,6 +595,19 @@ esac ;; (stacklets) _arguments "${_arguments_options[@]}" \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -410,10 +630,26 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ -'-a[Will display services of all namespaces, not only the current one]' \ -'--all-namespaces[Will display services of all namespaces, not only the current one]' \ +'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ +'-n+[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'--product-namespace=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'--product-ns=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '-c[Controls if the output will use color. This only applies to the output type '\''plain'\'']' \ '--color[Controls if the output will use color. This only applies to the output type '\''plain'\'']' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -450,8 +686,21 @@ esac ;; (demo) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ ":: :_stackablectl__demo_commands" \ @@ -472,6 +721,19 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -486,6 +748,19 @@ yaml\:"Print output formatted as YAML"))' \ '--output=[]:OUTPUT_TYPE:((plain\:"Print output formatted as plain text" json\:"Print output formatted as JSON" yaml\:"Print output formatted as YAML"))' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -495,9 +770,7 @@ yaml\:"Print output formatted as YAML"))' \ ;; (install) _arguments "${_arguments_options[@]}" \ -'*-s+[List of parameters to use when installing the stack]:STACK_PARAMETERS: ' \ '*--stack-parameters=[List of parameters to use when installing the stack]:STACK_PARAMETERS: ' \ -'*-p+[List of parameters to use when installing the demo]:PARAMETERS: ' \ '*--parameters=[List of parameters to use when installing the demo]:PARAMETERS: ' \ '-c+[Type of local cluster to use for testing]:CLUSTER_TYPE:((kind\:"Use a kind cluster, see " minikube\:"Use a minikube cluster"))' \ @@ -506,6 +779,25 @@ minikube\:"Use a minikube cluster"))' \ '--cluster-name=[Name of the local cluster]:CLUSTER_NAME: ' \ '--cluster-nodes=[Number of total nodes in the local cluster]:CLUSTER_NODES: ' \ '--cluster-cp-nodes=[Number of control plane nodes in the local cluster]:CLUSTER_CP_NODES: ' \ +'--operator-namespace=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ +'--operator-ns=[Namespace where the operators are deployed]:OPERATOR_NAMESPACE: ' \ +'-n+[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'--product-namespace=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'--product-ns=[Namespace where the products (e.g. stacks or demos) are deployed]:PRODUCT_NAMESPACE: ' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--skip-release[Skip the installation of the release during the stack install process]' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ '-h[Print help (see more with '\''--help'\'')]' \ '--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ @@ -551,8 +843,21 @@ esac ;; (completions) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ ":: :_stackablectl__completions_commands" \ @@ -567,24 +872,63 @@ _arguments "${_arguments_options[@]}" \ case $line[1] in (bash) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ && ret=0 ;; (fish) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ && ret=0 ;; (zsh) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ && ret=0 @@ -627,8 +971,21 @@ esac ;; (cache) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ ":: :_stackablectl__cache_commands" \ @@ -643,18 +1000,44 @@ _arguments "${_arguments_options[@]}" \ case $line[1] in (list) _arguments "${_arguments_options[@]}" \ -'-h[Print help]' \ -'--help[Print help]' \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ && ret=0 ;; (clean) _arguments "${_arguments_options[@]}" \ +'-l+[Log level this application uses]:LOG_LEVEL: ' \ +'--log-level=[Log level this application uses]:LOG_LEVEL: ' \ +'*-d+[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*--demo-file=[Provide one or more additional (custom) demo file(s)]:DEMO_FILE:_files' \ +'*-s+[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*--stack-file=[Provide one or more additional (custom) stack file(s)]:STACK_FILE:_files' \ +'*-r+[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'*--release-file=[Provide one or more additional (custom) release file(s)]:RELEASE_FILE:_files' \ +'--helm-repo-stable=[Provide a custom Helm stable repository URL]:URL:_urls' \ +'--helm-repo-test=[Provide a custom Helm test repository URL]:URL:_urls' \ +'--helm-repo-dev=[Provide a custom Helm dev repository URL]:URL:_urls' \ '--old[Only remove outdated files in the cache]' \ '--outdated[Only remove outdated files in the cache]' \ -'-h[Print help]' \ -'--help[Print help]' \ +'--no-cache[Do not cache the remote (default) demo, stack and release files]' \ +'--offline[Do not request any remote files via the network]' \ +'-h[Print help (see more with '\''--help'\'')]' \ +'--help[Print help (see more with '\''--help'\'')]' \ '-V[Print version]' \ '--version[Print version]' \ && ret=0 @@ -1152,11 +1535,11 @@ _stackablectl__help__help_commands() { (( $+functions[_stackablectl__operator__help_commands] )) || _stackablectl__operator__help_commands() { local commands; commands=( -'list:List available (or installed) operators' \ +'list:List available operators' \ 'describe:Print out detailed operator information' \ 'install:Install one or more operators' \ 'uninstall:Uninstall one or more operators' \ -'installed:List installed operator (same as list -i)' \ +'installed:List installed operators' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl operator help commands' commands "$@" @@ -1378,22 +1761,22 @@ _stackablectl__stacklets__list_commands() { (( $+functions[_stackablectl__help__operator_commands] )) || _stackablectl__help__operator_commands() { local commands; commands=( -'list:List available (or installed) operators' \ +'list:List available operators' \ 'describe:Print out detailed operator information' \ 'install:Install one or more operators' \ 'uninstall:Uninstall one or more operators' \ -'installed:List installed operator (same as list -i)' \ +'installed:List installed operators' \ ) _describe -t commands 'stackablectl help operator commands' commands "$@" } (( $+functions[_stackablectl__operator_commands] )) || _stackablectl__operator_commands() { local commands; commands=( -'list:List available (or installed) operators' \ +'list:List available operators' \ 'describe:Print out detailed operator information' \ 'install:Install one or more operators' \ 'uninstall:Uninstall one or more operators' \ -'installed:List installed operator (same as list -i)' \ +'installed:List installed operators' \ 'help:Print this message or the help of the given subcommand(s)' \ ) _describe -t commands 'stackablectl operator commands' commands "$@" diff --git a/extra/completions/stackablectl.bash b/extra/completions/stackablectl.bash index ea1bca21..9f048250 100644 --- a/extra/completions/stackablectl.bash +++ b/extra/completions/stackablectl.bash @@ -298,7 +298,7 @@ _stackablectl() { case "${cmd}" in stackablectl) - opts="-l -n -d -s -r -h -V --log-level --no-cache --offline --operator-namespace --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version operator release stack stacklets demo completions cache help" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version operator release stack stacklets demo completions cache help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -312,14 +312,6 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - --operator-namespace) - COMPREPLY=($(compgen -f "${cur}")) - return 0 - ;; - -n) - COMPREPLY=($(compgen -f "${cur}")) - return 0 - ;; --demo-file) COMPREPLY=($(compgen -f "${cur}")) return 0 @@ -364,12 +356,56 @@ _stackablectl() { return 0 ;; stackablectl__cache) - opts="-h -V --help --version list clean help" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version list clean help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -378,12 +414,56 @@ _stackablectl() { return 0 ;; stackablectl__cache__clean) - opts="-h -V --outdated --old --help --version" + opts="-l -d -s -r -h -V --outdated --old --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -448,12 +528,56 @@ _stackablectl() { return 0 ;; stackablectl__cache__list) - opts="-h -V --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -462,12 +586,56 @@ _stackablectl() { return 0 ;; stackablectl__completions) - opts="-h -V --help --version bash fish zsh help" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version bash fish zsh help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -476,12 +644,56 @@ _stackablectl() { return 0 ;; stackablectl__completions__bash) - opts="-h -V --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -490,36 +702,80 @@ _stackablectl() { return 0 ;; stackablectl__completions__fish) - opts="-h -V --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in - *) - COMPREPLY=() + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 ;; - esac - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - ;; - stackablectl__completions__help) - opts="bash fish zsh help" - if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - fi - case "${prev}" in - *) - COMPREPLY=() + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 ;; - esac - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - ;; - stackablectl__completions__help__bash) - opts="" - if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__completions__help) + opts="bash fish zsh help" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__completions__help__bash) + opts="" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi @@ -574,12 +830,56 @@ _stackablectl() { return 0 ;; stackablectl__completions__zsh) - opts="-h -V --help --version" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -588,12 +888,56 @@ _stackablectl() { return 0 ;; stackablectl__demo) - opts="-h -V --help --version list describe install help" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version list describe install help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -602,7 +946,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__describe) - opts="-o -h -V --output --help --version " + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -616,6 +960,50 @@ _stackablectl() { COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) return 0 ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -694,7 +1082,7 @@ _stackablectl() { return 0 ;; stackablectl__demo__install) - opts="-s -p -c -h -V --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --help --version " + opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --product-namespace --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -704,18 +1092,10 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - -s) - COMPREPLY=($(compgen -f "${cur}")) - return 0 - ;; --parameters) COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - -p) - COMPREPLY=($(compgen -f "${cur}")) - return 0 - ;; --cluster) COMPREPLY=($(compgen -W "kind minikube" -- "${cur}")) return 0 @@ -736,58 +1116,166 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - *) - COMPREPLY=() + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 ;; - esac - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - ;; - stackablectl__demo__list) - opts="-o -h -V --output --help --version" - if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - fi - case "${prev}" in - --output) - COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - -o) - COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + --product-namespace) + COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - *) - COMPREPLY=() + --product-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 ;; - esac - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - ;; - stackablectl__help) - opts="operator release stack stacklets demo completions cache help" - if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - fi - case "${prev}" in - *) - COMPREPLY=() + -n) + COMPREPLY=($(compgen -f "${cur}")) + return 0 ;; - esac - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - ;; - stackablectl__help__cache) - opts="list clean" - if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - fi - case "${prev}" in - *) - COMPREPLY=() + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__demo__list) + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + --output) + COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + return 0 + ;; + -o) + COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__help) + opts="operator release stack stacklets demo completions cache help" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__help__cache) + opts="list clean" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + *) + COMPREPLY=() ;; esac COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) @@ -1186,12 +1674,56 @@ _stackablectl() { return 0 ;; stackablectl__operator) - opts="-h -V --help --version list describe install uninstall installed help" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version list describe install uninstall installed help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1200,7 +1732,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__describe) - opts="-o -h -V --output --help --version " + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1214,6 +1746,50 @@ _stackablectl() { COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) return 0 ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1320,12 +1896,20 @@ _stackablectl() { return 0 ;; stackablectl__operator__install) - opts="-c -h -V --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --help --version ..." + opts="-c -l -d -s -r -h -V --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version ..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; --cluster) COMPREPLY=($(compgen -W "kind minikube" -- "${cur}")) return 0 @@ -1346,6 +1930,50 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1354,7 +1982,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__installed) - opts="-o -h -V --output --help --version" + opts="-o -l -d -s -r -h -V --output --operator-ns --operator-namespace --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1368,6 +1996,58 @@ _stackablectl() { COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) return 0 ;; + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1376,7 +2056,7 @@ _stackablectl() { return 0 ;; stackablectl__operator__list) - opts="-o -h -V --output --help --version" + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1390,6 +2070,50 @@ _stackablectl() { COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) return 0 ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1398,12 +2122,64 @@ _stackablectl() { return 0 ;; stackablectl__operator__uninstall) - opts="-h -V --help --version ..." + opts="-l -d -s -r -h -V --operator-ns --operator-namespace --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version ..." if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1412,12 +2188,56 @@ _stackablectl() { return 0 ;; stackablectl__release) - opts="-h -V --help --version list describe install uninstall help" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version list describe install uninstall help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1426,7 +2246,7 @@ _stackablectl() { return 0 ;; stackablectl__release__describe) - opts="-o -h -V --output --help --version " + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1436,8 +2256,52 @@ _stackablectl() { COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) return 0 ;; - -o) - COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + -o) + COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) return 0 ;; *) @@ -1532,7 +2396,7 @@ _stackablectl() { return 0 ;; stackablectl__release__install) - opts="-i -e -c -h -V --include --exclude --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --help --version " + opts="-i -e -c -l -d -s -r -h -V --include --exclude --operator-ns --operator-namespace --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1554,6 +2418,14 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; --cluster) COMPREPLY=($(compgen -W "kind minikube" -- "${cur}")) return 0 @@ -1574,6 +2446,50 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1582,7 +2498,7 @@ _stackablectl() { return 0 ;; stackablectl__release__list) - opts="-o -h -V --output --help --version" + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1596,6 +2512,50 @@ _stackablectl() { COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) return 0 ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1604,46 +2564,186 @@ _stackablectl() { return 0 ;; stackablectl__release__uninstall) - opts="-h -V --help --version " + opts="-l -d -s -r -h -V --operator-ns --operator-namespace --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + *) + COMPREPLY=() + ;; + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__stack) + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version list describe install help" + if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; - esac - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - ;; - stackablectl__stack) - opts="-h -V --help --version list describe install help" - if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - fi - case "${prev}" in - *) - COMPREPLY=() + esac + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + ;; + stackablectl__stack__describe) + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version " + if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 + fi + case "${prev}" in + --output) + COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + return 0 + ;; + -o) + COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 ;; - esac - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - ;; - stackablectl__stack__describe) - opts="-o -h -V --output --help --version " - if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then - COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) - return 0 - fi - case "${prev}" in - --output) - COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - -o) - COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) return 0 ;; *) @@ -1724,7 +2824,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__install) - opts="-s -p -c -h -V --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --help --version " + opts="-c -n -l -d -s -r -h -V --skip-release --stack-parameters --parameters --cluster --cluster-name --cluster-nodes --cluster-cp-nodes --operator-ns --operator-namespace --product-ns --product-namespace --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version " if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1734,18 +2834,10 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - -s) - COMPREPLY=($(compgen -f "${cur}")) - return 0 - ;; --parameters) COMPREPLY=($(compgen -f "${cur}")) return 0 ;; - -p) - COMPREPLY=($(compgen -f "${cur}")) - return 0 - ;; --cluster) COMPREPLY=($(compgen -W "kind minikube" -- "${cur}")) return 0 @@ -1766,6 +2858,70 @@ _stackablectl() { COMPREPLY=($(compgen -f "${cur}")) return 0 ;; + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --product-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --product-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -n) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1774,7 +2930,7 @@ _stackablectl() { return 0 ;; stackablectl__stack__list) - opts="-o -h -V --output --help --version" + opts="-o -l -d -s -r -h -V --output --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1788,6 +2944,50 @@ _stackablectl() { COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) return 0 ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1796,12 +2996,56 @@ _stackablectl() { return 0 ;; stackablectl__stacklets) - opts="-h -V --help --version list help" + opts="-l -d -s -r -h -V --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version list help" if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 fi case "${prev}" in + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; @@ -1852,7 +3096,7 @@ _stackablectl() { return 0 ;; stackablectl__stacklets__list) - opts="-a -c -o -h -V --all-namespaces --color --output --help --version" + opts="-c -o -n -l -d -s -r -h -V --color --output --operator-ns --operator-namespace --product-ns --product-namespace --log-level --no-cache --offline --demo-file --stack-file --release-file --helm-repo-stable --helm-repo-test --helm-repo-dev --help --version" if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) return 0 @@ -1866,6 +3110,70 @@ _stackablectl() { COMPREPLY=($(compgen -W "plain json yaml" -- "${cur}")) return 0 ;; + --operator-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --operator-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --product-namespace) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --product-ns) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -n) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --log-level) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -l) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --demo-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -d) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --stack-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -s) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --release-file) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + -r) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-stable) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-test) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; + --helm-repo-dev) + COMPREPLY=($(compgen -f "${cur}")) + return 0 + ;; *) COMPREPLY=() ;; diff --git a/extra/completions/stackablectl.fish b/extra/completions/stackablectl.fish index 748d8dcb..69a58ef4 100644 --- a/extra/completions/stackablectl.fish +++ b/extra/completions/stackablectl.fish @@ -1,5 +1,4 @@ complete -c stackablectl -n "__fish_use_subcommand" -s l -l log-level -d 'Log level this application uses' -r -complete -c stackablectl -n "__fish_use_subcommand" -s n -l operator-namespace -d 'Namespace in the cluster used to deploy the products and operators' -r complete -c stackablectl -n "__fish_use_subcommand" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F complete -c stackablectl -n "__fish_use_subcommand" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F complete -c stackablectl -n "__fish_use_subcommand" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F @@ -18,38 +17,104 @@ complete -c stackablectl -n "__fish_use_subcommand" -f -a "demo" -d 'Interact wi complete -c stackablectl -n "__fish_use_subcommand" -f -a "completions" -d 'Generate shell completions for this tool' complete -c stackablectl -n "__fish_use_subcommand" -f -a "cache" -d 'Interact with locally cached files' complete -c stackablectl -n "__fish_use_subcommand" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available (or installed) operators' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available operators' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "describe" -d 'Print out detailed operator information' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install one or more operators' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall one or more operators' -complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "installed" -d 'List installed operator (same as list -i)' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "installed" -d 'List installed operators' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "{kind Use a kind cluster\, see ,minikube Use a minikube cluster}" complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l cluster-name -d 'Name of the local cluster' -r complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from installed" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available (or installed) operators' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available operators' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "describe" -d 'Print out detailed operator information' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install one or more operators' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall one or more operators' -complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "installed" -d 'List installed operator (same as list -i)' +complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "installed" -d 'List installed operators' complete -c stackablectl -n "__fish_seen_subcommand_from operator; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available releases' complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "describe" -d 'Print out detailed release information' @@ -57,110 +122,308 @@ complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall a release' complete -c stackablectl -n "__fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s i -l include -d 'Whitelist of product operators to install' -r complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s e -l exclude -d 'Blacklist of product operators to install' -r +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "{kind Use a kind cluster\, see ,minikube Use a minikube cluster}" complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l cluster-name -d 'Name of the local cluster' -r complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -l operator-namespace -l operator-ns -d 'Namespace in the cluster used to deploy the operators' -r +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from uninstall" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available releases' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "describe" -d 'Print out detailed release information' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install a specific release' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "uninstall" -d 'Uninstall a release' complete -c stackablectl -n "__fish_seen_subcommand_from release; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available stacks' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "describe" -d 'Describe a specific stack' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install a specific stack' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s s -l stack-parameters -d 'List of parameters to use when installing the stack' -r -complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s p -l parameters -d 'List of parameters to use when installing the stack' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l stack-parameters -d 'List of parameters to use when installing the stack' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l parameters -d 'List of parameters to use when installing the stack' -r complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "{kind Use a kind cluster\, see ,minikube Use a minikube cluster}" complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l cluster-name -d 'Name of the local cluster' -r complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s n -l product-namespace -l product-ns -d 'Namespace where the products (e.g. stacks or demos) are deployed' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l skip-release -d 'Skip the installation of the release during the stack install process' +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available stacks' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "describe" -d 'Describe a specific stack' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install a specific stack' complete -c stackablectl -n "__fish_seen_subcommand_from stack; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List deployed services' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" -complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s a -l all-namespaces -d 'Will display services of all namespaces, not only the current one' +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s n -l product-namespace -l product-ns -d 'Namespace where the products (e.g. stacks or demos) are deployed' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s c -l color -d 'Controls if the output will use color. This only applies to the output type \'plain\'' +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List deployed services' complete -c stackablectl -n "__fish_seen_subcommand_from stacklets; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available demos' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "describe" -d 'Print out detailed demo information' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install a specific demo' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -s o -l output -r -f -a "{plain Print output formatted as plain text,json Print output formatted as JSON,yaml Print output formatted as YAML}" +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from describe" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s s -l stack-parameters -d 'List of parameters to use when installing the stack' -r -complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s p -l parameters -d 'List of parameters to use when installing the demo' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l stack-parameters -d 'List of parameters to use when installing the stack' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l parameters -d 'List of parameters to use when installing the demo' -r complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s c -l cluster -d 'Type of local cluster to use for testing' -r -f -a "{kind Use a kind cluster\, see ,minikube Use a minikube cluster}" complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l cluster-name -d 'Name of the local cluster' -r complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l cluster-nodes -d 'Number of total nodes in the local cluster' -r complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l cluster-cp-nodes -d 'Number of control plane nodes in the local cluster' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l operator-namespace -l operator-ns -d 'Namespace where the operators are deployed' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s n -l product-namespace -l product-ns -d 'Namespace where the products (e.g. stacks or demos) are deployed' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l skip-release -d 'Skip the installation of the release during the stack install process' +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -l offline -d 'Do not request any remote files via the network' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from install" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List available demos' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "describe" -d 'Print out detailed demo information' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "install" -d 'Install a specific demo' complete -c stackablectl -n "__fish_seen_subcommand_from demo; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -f -a "bash" -d 'Generate shell completions for Bash' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -f -a "fish" -d 'Generate shell completions for Fish' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -f -a "zsh" -d 'Generate shell completions for ZSH' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from bash" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from fish" -s V -l version -d 'Print version' -complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from zsh" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -f -a "bash" -d 'Generate shell completions for Bash' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -f -a "fish" -d 'Generate shell completions for Fish' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -f -a "zsh" -d 'Generate shell completions for ZSH' complete -c stackablectl -n "__fish_seen_subcommand_from completions; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from bash; and not __fish_seen_subcommand_from fish; and not __fish_seen_subcommand_from zsh; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List cached files' complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -f -a "clean" -d 'Clean cached files' complete -c stackablectl -n "__fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from list" -s V -l version -d 'Print version' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -s l -l log-level -d 'Log level this application uses' -r +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -s d -l demo-file -d 'Provide one or more additional (custom) demo file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -s s -l stack-file -d 'Provide one or more additional (custom) stack file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -s r -l release-file -d 'Provide one or more additional (custom) release file(s)' -r -F +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -l helm-repo-stable -d 'Provide a custom Helm stable repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -l helm-repo-test -d 'Provide a custom Helm test repository URL' -r -f +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -l helm-repo-dev -d 'Provide a custom Helm dev repository URL' -r -f complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -l old -l outdated -d 'Only remove outdated files in the cache' -complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -s h -l help -d 'Print help' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -l no-cache -d 'Do not cache the remote (default) demo, stack and release files' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -l offline -d 'Do not request any remote files via the network' +complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -s h -l help -d 'Print help (see more with \'--help\')' complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from clean" -s V -l version -d 'Print version' complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -f -a "list" -d 'List cached files' complete -c stackablectl -n "__fish_seen_subcommand_from cache; and __fish_seen_subcommand_from help; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from clean; and not __fish_seen_subcommand_from help" -f -a "clean" -d 'Clean cached files' @@ -173,11 +436,11 @@ complete -c stackablectl -n "__fish_seen_subcommand_from help; and not __fish_se complete -c stackablectl -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from release; and not __fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from help" -f -a "completions" -d 'Generate shell completions for this tool' complete -c stackablectl -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from release; and not __fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from help" -f -a "cache" -d 'Interact with locally cached files' complete -c stackablectl -n "__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from release; and not __fish_seen_subcommand_from stack; and not __fish_seen_subcommand_from stacklets; and not __fish_seen_subcommand_from demo; and not __fish_seen_subcommand_from completions; and not __fish_seen_subcommand_from cache; and not __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' -complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed" -f -a "list" -d 'List available (or installed) operators' +complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed" -f -a "list" -d 'List available operators' complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed" -f -a "describe" -d 'Print out detailed operator information' complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed" -f -a "install" -d 'Install one or more operators' complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed" -f -a "uninstall" -d 'Uninstall one or more operators' -complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed" -f -a "installed" -d 'List installed operator (same as list -i)' +complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from operator; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall; and not __fish_seen_subcommand_from installed" -f -a "installed" -d 'List installed operators' complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall" -f -a "list" -d 'List available releases' complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall" -f -a "describe" -d 'Print out detailed release information' complete -c stackablectl -n "__fish_seen_subcommand_from help; and __fish_seen_subcommand_from release; and not __fish_seen_subcommand_from list; and not __fish_seen_subcommand_from describe; and not __fish_seen_subcommand_from install; and not __fish_seen_subcommand_from uninstall" -f -a "install" -d 'Install a specific release' diff --git a/extra/man/stackablectl.1 b/extra/man/stackablectl.1 index 960adf18..f197c972 100644 --- a/extra/man/stackablectl.1 +++ b/extra/man/stackablectl.1 @@ -4,7 +4,7 @@ .SH NAME stackablectl .SH SYNOPSIS -\fBstackablectl\fR [\fB\-l\fR|\fB\-\-log\-level\fR] [\fB\-\-no\-cache\fR] [\fB\-\-offline\fR] [\fB\-n\fR|\fB\-\-operator\-namespace\fR] [\fB\-d\fR|\fB\-\-demo\-file\fR] [\fB\-s\fR|\fB\-\-stack\-file\fR] [\fB\-r\fR|\fB\-\-release\-file\fR] [\fB\-\-helm\-repo\-stable\fR] [\fB\-\-helm\-repo\-test\fR] [\fB\-\-helm\-repo\-dev\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR> +\fBstackablectl\fR [\fB\-l\fR|\fB\-\-log\-level\fR] [\fB\-\-no\-cache\fR] [\fB\-\-offline\fR] [\fB\-d\fR|\fB\-\-demo\-file\fR] [\fB\-s\fR|\fB\-\-stack\-file\fR] [\fB\-r\fR|\fB\-\-release\-file\fR] [\fB\-\-helm\-repo\-stable\fR] [\fB\-\-helm\-repo\-test\fR] [\fB\-\-helm\-repo\-dev\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR> .SH DESCRIPTION .SH OPTIONS .TP @@ -20,10 +20,7 @@ Cached files are saved at \*(Aq$XDG_CACHE_HOME/stackablectl\*(Aq, which is usual \fB\-\-offline\fR Do not request any remote files via the network .TP -\fB\-n\fR, \fB\-\-operator\-namespace\fR=\fIOPERATOR_NAMESPACE\fR [default: default] -Namespace in the cluster used to deploy the products and operators -.TP -\fB\-d\fR, \fB\-\-demo\-file\fR=\fIDEMO_FILES\fR +\fB\-d\fR, \fB\-\-demo\-file\fR=\fIDEMO_FILE\fR Provide one or more additional (custom) demo file(s) Demos are loaded in the following order: Remote (default) demo file, custom @@ -31,10 +28,10 @@ demo files provided via the \*(AqSTACKABLE_DEMO_FILES\*(Aq environment variable, lastly demo files provided via the \*(Aq\-d/\-\-demo\-file\*(Aq argument(s). If there are demos with the same name, the last demo definition will be used. -Use "stackablectl \-d path/to/demos1.yaml \-d path/to/demos2.yaml [OPTIONS] " +Use "stackablectl [OPTIONS] \-d path/to/demos1.yaml \-d path/to/demos2.yaml" to provide multiple additional demo files. .TP -\fB\-s\fR, \fB\-\-stack\-file\fR=\fISTACK_FILES\fR +\fB\-s\fR, \fB\-\-stack\-file\fR=\fISTACK_FILE\fR Provide one or more additional (custom) stack file(s) Stacks are loaded in the following order: Remote (default) stack file, custom @@ -42,10 +39,10 @@ stack files provided via the \*(AqSTACKABLE_STACK_FILES\*(Aq environment variabl lastly demo files provided via the \*(Aq\-s/\-\-stack\-file\*(Aq argument(s). If there are stacks with the same name, the last stack definition will be used. -Use "stackablectl \-s path/to/stacks1.yaml \-s path/to/stacks2.yaml [OPTIONS] " +Use "stackablectl [OPTIONS] \-s path/to/stacks1.yaml \-s path/to/stacks2.yaml" to provide multiple additional stack files. .TP -\fB\-r\fR, \fB\-\-release\-file\fR=\fIRELEASE_FILES\fR +\fB\-r\fR, \fB\-\-release\-file\fR=\fIRELEASE_FILE\fR Provide one or more additional (custom) release file(s) Releases are loaded in the following order: Remote (default) release file, @@ -54,7 +51,7 @@ variable, and lastly release files provided via the \*(Aq\-r/\-\-release\-file\* argument(s). If there are releases with the same name, the last release definition will be used. -Use "stackablectl \-r path/to/releases1.yaml \-r path/to/releases2.yaml [OPTIONS] " +Use "stackablectl [OPTIONS] \-r path/to/releases1.yaml \-r path/to/releases2.yaml" to provide multiple additional release files. .TP \fB\-\-helm\-repo\-stable\fR=\fIURL\fR [default: https://repo.stackable.tech/repository/helm\-stable/] diff --git a/rust/stackable-cockpit/src/constants.rs b/rust/stackable-cockpit/src/constants.rs index d75f4acd..a8dae594 100644 --- a/rust/stackable-cockpit/src/constants.rs +++ b/rust/stackable-cockpit/src/constants.rs @@ -1,10 +1,14 @@ use std::time::Duration; pub const REDACTED_PASSWORD: &str = ""; -pub const PASSWORD_LEN: usize = 32; +pub const PASSWORD_LENGTH: usize = 32; -pub const DEFAULT_STACKABLE_NAMESPACE: &str = "stackable"; -pub const DEFAULT_NAMESPACE: &str = "default"; +pub const DEFAULT_OPERATOR_NAMESPACE: &str = "stackable-operators"; +// TODO (Techassi): Change this to "stackable" once we switch to this version. +// Currently lots of demos can only run in the default namespace, so we have to +// keep "default" here, until we switch the demos. We can't switch them right +// now, as the old stackablectl would break. +pub const DEFAULT_PRODUCT_NAMESPACE: &str = "default"; pub const DEFAULT_LOCAL_CLUSTER_NAME: &str = "stackable-data-platform"; diff --git a/rust/stackable-cockpit/src/kube.rs b/rust/stackable-cockpit/src/kube.rs index f0a2b833..0d604e48 100644 --- a/rust/stackable-cockpit/src/kube.rs +++ b/rust/stackable-cockpit/src/kube.rs @@ -3,13 +3,13 @@ use std::string::FromUtf8Error; use k8s_openapi::{ api::{ apps::v1::{Deployment, DeploymentCondition, StatefulSet, StatefulSetCondition}, - core::v1::{Secret, Service}, + core::v1::{Namespace, Secret, Service}, }, apimachinery::pkg::apis::meta::v1::Condition, }; use kube::{ - api::{ListParams, Patch, PatchParams}, - core::{DynamicObject, GroupVersionKind, ObjectList, TypeMeta}, + api::{ListParams, Patch, PatchParams, PostParams}, + core::{DynamicObject, GroupVersionKind, ObjectList, ObjectMeta, TypeMeta}, discovery::Scope, Api, Client, Discovery, ResourceExt, }; @@ -22,6 +22,9 @@ use utoipa::ToSchema; use crate::constants::REDACTED_PASSWORD; +pub type ListResult = Result, E>; +pub type Result = std::result::Result; + #[derive(Debug, Snafu)] pub enum KubeClientError { #[snafu(display("kube error: {source}"))] @@ -60,7 +63,7 @@ pub struct KubeClient { impl KubeClient { /// Tries to create a new default Kubernetes client and immediately runs /// a discovery. - pub async fn new() -> Result { + pub async fn new() -> Result { let client = Client::try_default().await.context(KubeSnafu)?; let discovery = Discovery::new(client.clone()) .run() @@ -73,11 +76,7 @@ impl KubeClient { /// Deploys manifests defined the in raw `manifests` YAML string. This /// method will fail if it is unable to parse the manifests, unable to /// resolve GVKs or unable to patch the dynamic objects. - pub async fn deploy_manifests( - &self, - manifests: &str, - namespace: &str, - ) -> Result<(), KubeClientError> { + pub async fn deploy_manifests(&self, manifests: &str, namespace: &str) -> Result<()> { for manifest in serde_yaml::Deserializer::from_str(manifests) { let mut object = DynamicObject::deserialize(manifest).context(YamlSnafu)?; let object_type = object.types.as_ref().ok_or( @@ -115,7 +114,7 @@ impl KubeClient { Ok(()) } - /// List objects by looking up a GVK via the discovery. It returns an + /// Lists objects by looking up a GVK via the discovery. It returns an /// optional list of dynamic objects. The method returns [`Ok(None)`] /// if the client was unable to resolve the GVK. An error is returned /// when the client failed to list the objects. @@ -146,15 +145,15 @@ impl KubeClient { Ok(Some(objects)) } - /// List services by matching labels. The services can me matched by the - /// product labels. [`ListParamsExt`] provides a utility function to + /// Lists [`Service`]s by matching labels. The services can be matched by + /// the product labels. [`ListParamsExt`] provides a utility function to /// create [`ListParams`] based on a product name and optional instance /// name. pub async fn list_services( &self, namespace: Option<&str>, list_params: &ListParams, - ) -> Result, KubeClientError> { + ) -> ListResult { let service_api: Api = match namespace { Some(namespace) => Api::namespaced(self.client.clone(), namespace), None => Api::all(self.client.clone()), @@ -174,7 +173,7 @@ impl KubeClient { secret_namespace: &str, username_key: &str, password_key: Option<&str>, - ) -> Result, KubeClientError> { + ) -> Result> { let secret_api: Api = Api::namespaced(self.client.clone(), secret_namespace); let secret = secret_api.get(secret_name).await.context(KubeSnafu)?; @@ -200,11 +199,14 @@ impl KubeClient { Ok(Some((username, password))) } + /// Lists [`Deployment`]s by matching labels. The services can be matched + /// by the app labels. [`ListParamsExt`] provides a utility function to + /// create [`ListParams`] based on a app name and other labels. pub async fn list_deployments( &self, namespace: Option<&str>, list_params: &ListParams, - ) -> Result, KubeClientError> { + ) -> ListResult { let deployment_api: Api = match namespace { Some(namespace) => Api::namespaced(self.client.clone(), namespace), None => Api::all(self.client.clone()), @@ -215,11 +217,14 @@ impl KubeClient { Ok(deployments) } + /// Lists [`StatefulSet`]s by matching labels. The services can be matched + /// by the app labels. [`ListParamsExt`] provides a utility function to + /// create [`ListParams`] based on a app name and other labels. pub async fn list_stateful_sets( &self, namespace: Option<&str>, list_params: &ListParams, - ) -> Result, KubeClientError> { + ) -> ListResult { let stateful_set_api: Api = match namespace { Some(namespace) => Api::namespaced(self.client.clone(), namespace), None => Api::all(self.client.clone()), @@ -233,7 +238,48 @@ impl KubeClient { Ok(stateful_sets) } - /// Extracts the GVK from [`TypeMeta`]. + /// Returns a [`Namespace`] identified by name. If this namespace doesn't + /// exist, this method returns [`None`]. + pub async fn get_namespace(&self, name: &str) -> Result> { + let namespace_api: Api = Api::all(self.client.clone()); + namespace_api.get_opt(name).await.context(KubeSnafu) + } + + /// Creates a [`Namespace`] with `name` in the cluster. This method will + /// return an error if the namespace already exists. Instead of using this + /// method directly, it is advised to use [`namespace::create_if_needed`][1] + /// instead. + /// + /// [1]: crate::platform::namespace + pub async fn create_namespace(&self, name: String) -> Result<()> { + let namespace_api: Api = Api::all(self.client.clone()); + namespace_api + .create( + &PostParams::default(), + &Namespace { + metadata: ObjectMeta { + name: Some(name), + ..Default::default() + }, + ..Default::default() + }, + ) + .await + .context(KubeSnafu)?; + + Ok(()) + } + + /// Creates a [`Namespace`] only if not already present in the current cluster. + pub async fn create_namespace_if_needed(&self, name: String) -> Result<()> { + if self.get_namespace(&name).await?.is_none() { + self.create_namespace(name).await? + } + + Ok(()) + } + + /// Extracts the [`GroupVersionKind`] from [`TypeMeta`]. fn gvk_of_typemeta(type_meta: &TypeMeta) -> GroupVersionKind { match type_meta.api_version.split_once('/') { Some((group, version)) => GroupVersionKind::gvk(group, version, &type_meta.kind), diff --git a/rust/stackable-cockpit/src/platform/demo/spec.rs b/rust/stackable-cockpit/src/platform/demo/spec.rs index 2f32585d..7925de82 100644 --- a/rust/stackable-cockpit/src/platform/demo/spec.rs +++ b/rust/stackable-cockpit/src/platform/demo/spec.rs @@ -1,11 +1,17 @@ use serde::{Deserialize, Serialize}; +use snafu::{ResultExt, Snafu}; #[cfg(feature = "openapi")] use utoipa::ToSchema; use crate::{ common::ManifestSpec, + platform::{ + release::ReleaseList, + stack::{StackError, StackList}, + }, utils::params::{Parameter, RawParameter, RawParameterParseError}, + xfer::FileTransferClient, }; pub type RawDemoParameterParseError = RawParameterParseError; @@ -24,6 +30,11 @@ pub struct DemoSpecV2 { #[serde(skip_serializing_if = "Option::is_none")] pub documentation: Option, + /// Supported namespaces this demo can run in. An empty list indicates that + /// the demo can run in any namespace. + #[serde(default)] + pub supported_namespaces: Vec, + /// The name of the underlying stack #[serde(rename = "stackableStack")] pub stack: String, @@ -40,3 +51,82 @@ pub struct DemoSpecV2 { #[serde(default)] pub parameters: Vec, } + +#[derive(Debug, Snafu)] +pub enum DemoError { + #[snafu(display("no stack with name '{name}'"))] + NoSuchStack { name: String }, + + #[snafu(display("stack error"))] + StackError { source: StackError }, + + #[snafu(display("cannot install demo in namespace '{requested}', only '{}' supported", supported.join(", ")))] + UnsupportedNamespace { + requested: String, + supported: Vec, + }, +} + +impl DemoSpecV2 { + #[allow(clippy::too_many_arguments)] + pub async fn install( + &self, + stack_list: StackList, + release_list: ReleaseList, + operator_namespace: &str, + product_namespace: &str, + stack_parameters: &[String], + demo_parameters: &[String], + transfer_client: &FileTransferClient, + skip_release: bool, + ) -> Result<(), DemoError> { + // Returns an error if the demo doesn't support to be installed in the + // requested namespace + if !self.supports_namespace(product_namespace) { + return Err(DemoError::UnsupportedNamespace { + requested: product_namespace.to_string(), + supported: self.supported_namespaces.clone(), + }); + } + + // Get the stack spec based on the name defined in the demo spec + let stack_spec = stack_list.get(&self.stack).ok_or(DemoError::NoSuchStack { + name: self.stack.clone(), + })?; + + // Install the stack + stack_spec + .install( + release_list, + operator_namespace, + product_namespace, + skip_release, + ) + .context(StackSnafu)?; + + // Install stack manifests + stack_spec + .install_stack_manifests(stack_parameters, product_namespace, transfer_client) + .await + .context(StackSnafu)?; + + // Install demo manifests + stack_spec + .install_demo_manifests( + &self.manifests, + &self.parameters, + demo_parameters, + product_namespace, + transfer_client, + ) + .await + .context(StackSnafu)?; + + Ok(()) + } + + fn supports_namespace(&self, namespace: impl Into) -> bool { + self.supported_namespaces.is_empty() + || self.supported_namespaces.contains(&namespace.into()) + } +} diff --git a/rust/stackable-cockpit/src/platform/mod.rs b/rust/stackable-cockpit/src/platform/mod.rs index 8f1c2134..e207ee02 100644 --- a/rust/stackable-cockpit/src/platform/mod.rs +++ b/rust/stackable-cockpit/src/platform/mod.rs @@ -1,4 +1,5 @@ pub mod demo; +pub mod namespace; pub mod operator; pub mod product; pub mod release; diff --git a/rust/stackable-cockpit/src/platform/namespace.rs b/rust/stackable-cockpit/src/platform/namespace.rs new file mode 100644 index 00000000..b711699b --- /dev/null +++ b/rust/stackable-cockpit/src/platform/namespace.rs @@ -0,0 +1,30 @@ +use snafu::{ResultExt, Snafu}; + +use crate::kube::{KubeClient, KubeClientError}; + +#[derive(Debug, Snafu)] +pub enum NamespaceError { + #[snafu(display("kubernetes client error"))] + KubeClientError { source: KubeClientError }, + + #[snafu(display("permission denied - try to create the namespace manually or choose an already existing one to which you have access to"))] + PermissionDenied, +} + +/// Creates a namespace with `name` if needed (not already present in the +/// cluster). +pub async fn create_if_needed(name: String) -> Result<(), NamespaceError> { + let client = KubeClient::new().await.context(KubeClientSnafu)?; + client + .create_namespace_if_needed(name) + .await + .map_err(|err| match err { + KubeClientError::KubeError { source } => match source { + kube::Error::Api(err) if err.code == 401 => NamespaceError::PermissionDenied, + _ => NamespaceError::KubeClientError { + source: KubeClientError::KubeError { source }, + }, + }, + _ => NamespaceError::KubeClientError { source: err }, + }) +} diff --git a/rust/stackable-cockpit/src/platform/stack/spec.rs b/rust/stackable-cockpit/src/platform/stack/spec.rs index 76701588..5db00ff9 100644 --- a/rust/stackable-cockpit/src/platform/stack/spec.rs +++ b/rust/stackable-cockpit/src/platform/stack/spec.rs @@ -65,6 +65,12 @@ pub enum StackError { #[snafu(display("transfer error"))] TransferError { source: FileTransferError }, + + #[snafu(display("cannot install stack in namespace '{requested}', only '{}' supported", supported.join(", ")))] + UnsupportedNamespace { + requested: String, + supported: Vec, + }, } /// This struct describes a stack with the v2 spec @@ -79,6 +85,11 @@ pub struct StackSpecV2 { #[serde(rename = "stackableRelease")] pub release: String, + /// Supported namespaces this stack can run in. An empty list indicates that + /// the stack can run in any namespace. + #[serde(default)] + pub supported_namespaces: Vec, + /// A variable number of operators #[serde(rename = "stackableOperators")] pub operators: Vec, @@ -97,10 +108,32 @@ pub struct StackSpecV2 { } impl StackSpecV2 { - #[instrument(skip_all)] - pub fn install(&self, release_list: ReleaseList, namespace: &str) -> Result<(), StackError> { + #[instrument(skip(release_list))] + pub fn install( + &self, + release_list: ReleaseList, + operator_namespace: &str, + product_namespace: &str, + skip_release_install: bool, + ) -> Result<(), StackError> { info!("Installing stack"); + if skip_release_install { + info!("Skipping release installation during stack installation process"); + return Ok(()); + } + + // Returns an error if the stack doesn't support to be installed in the + // requested product namespace. When installing a demo, this check is + // already done on the demo spec level, however we still need to check + // here, as stacks can be installed on their own. + if !self.supports_namespace(product_namespace) { + return Err(StackError::UnsupportedNamespace { + supported: self.supported_namespaces.clone(), + requested: product_namespace.to_string(), + }); + } + // Get the release by name let release = release_list .get(&self.release) @@ -108,7 +141,7 @@ impl StackSpecV2 { // Install the release release - .install(&self.operators, &[], namespace) + .install(&self.operators, &[], operator_namespace) .context(ReleaseInstallSnafu)?; Ok(()) @@ -118,7 +151,7 @@ impl StackSpecV2 { pub async fn install_stack_manifests( &self, parameters: &[String], - namespace: &str, + product_namespace: &str, transfer_client: &FileTransferClient, ) -> Result<(), StackError> { info!("Installing stack manifests"); @@ -128,7 +161,13 @@ impl StackSpecV2 { .into_params(&self.parameters) .context(ParameterSnafu)?; - Self::install_manifests(&self.manifests, ¶meters, namespace, transfer_client).await?; + Self::install_manifests( + &self.manifests, + ¶meters, + product_namespace, + transfer_client, + ) + .await?; Ok(()) } @@ -138,7 +177,7 @@ impl StackSpecV2 { manifests: &Vec, valid_demo_parameters: &[DemoParameter], demo_parameters: &[String], - namespace: &str, + product_namespace: &str, transfer_client: &FileTransferClient, ) -> Result<(), StackError> { info!("Installing demo manifests"); @@ -148,7 +187,7 @@ impl StackSpecV2 { .into_params(valid_demo_parameters) .context(ParameterSnafu)?; - Self::install_manifests(manifests, ¶meters, namespace, transfer_client).await?; + Self::install_manifests(manifests, ¶meters, product_namespace, transfer_client).await?; Ok(()) } @@ -157,7 +196,7 @@ impl StackSpecV2 { async fn install_manifests( manifests: &Vec, parameters: &HashMap, - namespace: &str, + product_namespace: &str, transfer_client: &FileTransferClient, ) -> Result<(), StackError> { debug!("Installing demo / stack manifests"); @@ -196,7 +235,7 @@ impl StackSpecV2 { chart_version: Some(&helm_chart.version), }, Some(&values_yaml), - namespace, + product_namespace, false, ) .context(HelmSnafu)?; @@ -216,7 +255,7 @@ impl StackSpecV2 { let kube_client = kube::KubeClient::new().await.context(KubeSnafu)?; kube_client - .deploy_manifests(&manifests, namespace) + .deploy_manifests(&manifests, product_namespace) .await .context(KubeSnafu)? } @@ -225,4 +264,9 @@ impl StackSpecV2 { Ok(()) } + + fn supports_namespace(&self, namespace: impl Into) -> bool { + self.supported_namespaces.is_empty() + || self.supported_namespaces.contains(&namespace.into()) + } } diff --git a/rust/stackable-cockpit/src/platform/stacklet/mod.rs b/rust/stackable-cockpit/src/platform/stacklet/mod.rs index 703afd05..d7dd3824 100644 --- a/rust/stackable-cockpit/src/platform/stacklet/mod.rs +++ b/rust/stackable-cockpit/src/platform/stacklet/mod.rs @@ -60,6 +60,7 @@ pub async fn list(namespace: Option<&str>) -> Result, StackletErro stacklets.extend(minio::list(&kube_client, namespace).await?); stacklets.extend(opensearch::list(&kube_client, namespace).await?); stacklets.extend(prometheus::list(&kube_client, namespace).await?); + Ok(stacklets) } diff --git a/rust/stackable-cockpit/src/utils/templating.rs b/rust/stackable-cockpit/src/utils/templating.rs index a4ac9865..3764c666 100644 --- a/rust/stackable-cockpit/src/utils/templating.rs +++ b/rust/stackable-cockpit/src/utils/templating.rs @@ -4,7 +4,7 @@ use bcrypt::DEFAULT_COST; use rand::distributions::{Alphanumeric, DistString}; use tera::{Context, Function, Tera, Value}; -use crate::constants::PASSWORD_LEN; +use crate::constants::PASSWORD_LENGTH; pub fn render(content: &str, parameters: &HashMap) -> Result { // Create templating context @@ -21,7 +21,7 @@ pub fn render(content: &str, parameters: &HashMap) -> Result impl Function { |_args: &HashMap| -> tera::Result { - let password = Alphanumeric.sample_string(&mut rand::thread_rng(), PASSWORD_LEN); + let password = Alphanumeric.sample_string(&mut rand::thread_rng(), PASSWORD_LENGTH); Ok(password.into()) } } diff --git a/rust/stackablectl/Cargo.toml b/rust/stackablectl/Cargo.toml index ac0ac8b7..6ea39eb4 100644 --- a/rust/stackablectl/Cargo.toml +++ b/rust/stackablectl/Cargo.toml @@ -5,6 +5,7 @@ edition = "2021" publish = false [dependencies] +stackable-cockpit = { path = "../stackable-cockpit", features = ["openapi"] } comfy-table = { version = "6.2.0", features = ["custom_styling"] } tracing-subscriber = { workspace = true } clap_complete = { workspace = true } @@ -12,7 +13,6 @@ lazy_static = { workspace = true } serde_json = { workspace = true } serde_yaml = { workspace = true } indexmap = { workspace = true } -stackable-cockpit = { path = "../stackable-cockpit", features = ["openapi"] } dotenvy = { workspace = true } reqwest = { workspace = true } tracing = { workspace = true } diff --git a/rust/stackablectl/README.md b/rust/stackablectl/README.md index 15123dc5..9f1c9ee1 100644 --- a/rust/stackablectl/README.md +++ b/rust/stackablectl/README.md @@ -35,12 +35,14 @@ Options: --offline Do not request any remote files via the network - -n, --operator-namespace - Namespace in the cluster used to deploy the products and operators + -h, --help + Print help (see a summary with '-h') - [default: default] + -V, --version + Print version - -d, --demo-file +File options: + -d, --demo-file Provide one or more additional (custom) demo file(s) Demos are loaded in the following order: Remote (default) demo file, custom @@ -48,10 +50,10 @@ Options: lastly demo files provided via the '-d/--demo-file' argument(s). If there are demos with the same name, the last demo definition will be used. - Use "stackablectl -d path/to/demos1.yaml -d path/to/demos2.yaml [OPTIONS] " + Use "stackablectl [OPTIONS] -d path/to/demos1.yaml -d path/to/demos2.yaml" to provide multiple additional demo files. - -s, --stack-file + -s, --stack-file Provide one or more additional (custom) stack file(s) Stacks are loaded in the following order: Remote (default) stack file, custom @@ -59,10 +61,10 @@ Options: lastly demo files provided via the '-s/--stack-file' argument(s). If there are stacks with the same name, the last stack definition will be used. - Use "stackablectl -s path/to/stacks1.yaml -s path/to/stacks2.yaml [OPTIONS] " + Use "stackablectl [OPTIONS] -s path/to/stacks1.yaml -s path/to/stacks2.yaml" to provide multiple additional stack files. - -r, --release-file + -r, --release-file Provide one or more additional (custom) release file(s) Releases are loaded in the following order: Remote (default) release file, @@ -71,9 +73,10 @@ Options: argument(s). If there are releases with the same name, the last release definition will be used. - Use "stackablectl -r path/to/releases1.yaml -r path/to/releases2.yaml [OPTIONS] " + Use "stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml" to provide multiple additional release files. +Helm repository options: --helm-repo-stable Provide a custom Helm stable repository URL @@ -88,12 +91,6 @@ Options: Provide a custom Helm dev repository URL [default: https://repo.stackable.tech/repository/helm-dev/] - - -h, --help - Print help (see a summary with '-h') - - -V, --version - Print version ``` ## Dev Setup diff --git a/rust/stackablectl/src/cli/cluster_args.rs b/rust/stackablectl/src/args/cluster.rs similarity index 99% rename from rust/stackablectl/src/cli/cluster_args.rs rename to rust/stackablectl/src/args/cluster.rs index 82e05e18..e9b24c44 100644 --- a/rust/stackablectl/src/cli/cluster_args.rs +++ b/rust/stackablectl/src/args/cluster.rs @@ -26,6 +26,7 @@ pub enum CommonClusterArgsError { } #[derive(Debug, Args)] +#[command(next_help_heading = "Cluster options")] pub struct CommonClusterArgs { /// Type of local cluster to use for testing #[arg(short = 'c', long = "cluster", value_name = "CLUSTER_TYPE")] diff --git a/rust/stackablectl/src/args/file.rs b/rust/stackablectl/src/args/file.rs new file mode 100644 index 00000000..18b54579 --- /dev/null +++ b/rust/stackablectl/src/args/file.rs @@ -0,0 +1,45 @@ +use clap::{Args, ValueHint}; + +#[derive(Debug, Args)] +#[command(next_help_heading = "File options")] +pub struct CommonFileArgs { + /// Provide one or more additional (custom) demo file(s) + #[arg(short, long = "demo-file", value_name = "DEMO_FILE", value_hint = ValueHint::FilePath, global = true)] + #[arg(long_help = "Provide one or more additional (custom) demo file(s) + +Demos are loaded in the following order: Remote (default) demo file, custom +demo files provided via the 'STACKABLE_DEMO_FILES' environment variable, and +lastly demo files provided via the '-d/--demo-file' argument(s). If there are +demos with the same name, the last demo definition will be used. + +Use \"stackablectl [OPTIONS] -d path/to/demos1.yaml -d path/to/demos2.yaml\" +to provide multiple additional demo files.")] + pub demo_files: Vec, + + /// Provide one or more additional (custom) stack file(s) + #[arg(short, long = "stack-file", value_name = "STACK_FILE", value_hint = ValueHint::FilePath, global = true)] + #[arg(long_help = "Provide one or more additional (custom) stack file(s) + +Stacks are loaded in the following order: Remote (default) stack file, custom +stack files provided via the 'STACKABLE_STACK_FILES' environment variable, and +lastly demo files provided via the '-s/--stack-file' argument(s). If there are +stacks with the same name, the last stack definition will be used. + +Use \"stackablectl [OPTIONS] -s path/to/stacks1.yaml -s path/to/stacks2.yaml\" +to provide multiple additional stack files.")] + pub stack_files: Vec, + + /// Provide one or more additional (custom) release file(s) + #[arg(short, long = "release-file", value_name = "RELEASE_FILE", value_hint = ValueHint::FilePath, global = true)] + #[arg(long_help = "Provide one or more additional (custom) release file(s) + +Releases are loaded in the following order: Remote (default) release file, +custom release files provided via the 'STACKABLE_RELEASE_FILES' environment +variable, and lastly release files provided via the '-r/--release-file' +argument(s). If there are releases with the same name, the last release +definition will be used. + +Use \"stackablectl [OPTIONS] -r path/to/releases1.yaml -r path/to/releases2.yaml\" +to provide multiple additional release files.")] + pub release_files: Vec, +} diff --git a/rust/stackablectl/src/args/mod.rs b/rust/stackablectl/src/args/mod.rs new file mode 100644 index 00000000..e6467ff8 --- /dev/null +++ b/rust/stackablectl/src/args/mod.rs @@ -0,0 +1,9 @@ +mod cluster; +mod file; +mod namespace; +mod repo; + +pub use cluster::*; +pub use file::*; +pub use namespace::*; +pub use repo::*; diff --git a/rust/stackablectl/src/args/namespace.rs b/rust/stackablectl/src/args/namespace.rs new file mode 100644 index 00000000..2a0c3177 --- /dev/null +++ b/rust/stackablectl/src/args/namespace.rs @@ -0,0 +1,22 @@ +use clap::Args; +use stackable_cockpit::constants::{DEFAULT_OPERATOR_NAMESPACE, DEFAULT_PRODUCT_NAMESPACE}; + +#[derive(Debug, Args)] +#[command(next_help_heading = "Namespace options")] +pub struct CommonNamespaceArgs { + /// Namespace where the operators are deployed + #[arg(long, global = true, visible_aliases(["operator-ns"]), long_help = format!( + "Namespace where the operators are deployed\n\n\ + If this option is not provided, stackablectl will use the default value\n\ + '{}'.", DEFAULT_OPERATOR_NAMESPACE + ))] + pub operator_namespace: Option, + + /// Namespace where the products (e.g. stacks or demos) are deployed + #[arg(short = 'n', long, global = true, visible_aliases(["product-ns"]), long_help = format!( + "Namespace where the products (e.g. stacks or demos) are deployed\n\n\ + If this option is not provided, stackablectl will use the default value\n\ + '{}'.", DEFAULT_PRODUCT_NAMESPACE + ))] + pub product_namespace: Option, +} diff --git a/rust/stackablectl/src/args/repo.rs b/rust/stackablectl/src/args/repo.rs new file mode 100644 index 00000000..9dbcb449 --- /dev/null +++ b/rust/stackablectl/src/args/repo.rs @@ -0,0 +1,19 @@ +use clap::{Args, ValueHint}; + +use crate::constants::{HELM_REPO_URL_DEV, HELM_REPO_URL_STABLE, HELM_REPO_URL_TEST}; + +#[derive(Debug, Args)] +#[command(next_help_heading = "Helm repository options")] +pub struct CommonRepoArgs { + /// Provide a custom Helm stable repository URL + #[arg(long, value_name = "URL", value_hint = ValueHint::Url, default_value = HELM_REPO_URL_STABLE, global = true)] + pub helm_repo_stable: String, + + /// Provide a custom Helm test repository URL + #[arg(long, value_name = "URL", value_hint = ValueHint::Url, default_value = HELM_REPO_URL_TEST, global = true)] + pub helm_repo_test: String, + + /// Provide a custom Helm dev repository URL + #[arg(long, value_name = "URL", value_hint = ValueHint::Url, default_value = HELM_REPO_URL_DEV, global = true)] + pub helm_repo_dev: String, +} diff --git a/rust/stackablectl/src/cli/mod.rs b/rust/stackablectl/src/cli/mod.rs index 6e9cc77f..e3fbf745 100644 --- a/rust/stackablectl/src/cli/mod.rs +++ b/rust/stackablectl/src/cli/mod.rs @@ -1,46 +1,42 @@ use std::env; -use clap::{Parser, Subcommand, ValueEnum, ValueHint}; +use clap::{Parser, Subcommand, ValueEnum}; use snafu::{ResultExt, Snafu}; use tracing::{debug, instrument, Level}; use stackable_cockpit::{ - constants::{ - DEFAULT_NAMESPACE, HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST, - }, + constants::{HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST}, helm::{self, HelmError}, + platform::demo::DemoList, utils::path::{ IntoPathOrUrl, IntoPathsOrUrls, ParsePathsOrUrls, PathOrUrl, PathOrUrlParseError, }, - xfer::cache::CacheSettings, + xfer::{cache::CacheSettings, FileTransferClient}, }; use crate::{ + args::{CommonFileArgs, CommonRepoArgs}, cmds::{ cache::CacheArgs, completions::CompletionsArgs, demo::DemoArgs, operator::OperatorArgs, release::ReleaseArgs, stack::StackArgs, stacklets::StackletsArgs, }, constants::{ CACHE_HOME_PATH, ENV_KEY_DEMO_FILES, ENV_KEY_RELEASE_FILES, ENV_KEY_STACK_FILES, - HELM_REPO_URL_DEV, HELM_REPO_URL_STABLE, HELM_REPO_URL_TEST, REMOTE_DEMO_FILE, - REMOTE_RELEASE_FILE, REMOTE_STACK_FILE, + REMOTE_DEMO_FILE, REMOTE_RELEASE_FILE, REMOTE_STACK_FILE, }, }; -mod cluster_args; - -pub use cluster_args::*; - #[derive(Debug, Parser)] #[command(author, version, about, propagate_version = true)] pub struct Cli { /// Log level this application uses - #[arg(short, long)] + #[arg(short, long, global = true)] pub log_level: Option, /// Do not cache the remote (default) demo, stack and release files - #[arg(long)] #[arg( + long, + global = true, long_help = "Do not cache the remote (default) demo, stack and release files Cached files are saved at '$XDG_CACHE_HOME/stackablectl', which is usually @@ -49,64 +45,14 @@ Cached files are saved at '$XDG_CACHE_HOME/stackablectl', which is usually pub no_cache: bool, /// Do not request any remote files via the network - #[arg(long)] + #[arg(long, global = true)] pub offline: bool, - /// Namespace in the cluster used to deploy the products and operators - #[arg(short = 'n', long, default_value = DEFAULT_NAMESPACE)] - pub operator_namespace: String, - - /// Provide one or more additional (custom) demo file(s) - #[arg(short, long = "demo-file", value_hint = ValueHint::FilePath)] - #[arg(long_help = "Provide one or more additional (custom) demo file(s) - -Demos are loaded in the following order: Remote (default) demo file, custom -demo files provided via the 'STACKABLE_DEMO_FILES' environment variable, and -lastly demo files provided via the '-d/--demo-file' argument(s). If there are -demos with the same name, the last demo definition will be used. - -Use \"stackablectl -d path/to/demos1.yaml -d path/to/demos2.yaml [OPTIONS] \" -to provide multiple additional demo files.")] - pub demo_files: Vec, - - /// Provide one or more additional (custom) stack file(s) - #[arg(short, long = "stack-file", value_hint = ValueHint::FilePath)] - #[arg(long_help = "Provide one or more additional (custom) stack file(s) - -Stacks are loaded in the following order: Remote (default) stack file, custom -stack files provided via the 'STACKABLE_STACK_FILES' environment variable, and -lastly demo files provided via the '-s/--stack-file' argument(s). If there are -stacks with the same name, the last stack definition will be used. - -Use \"stackablectl -s path/to/stacks1.yaml -s path/to/stacks2.yaml [OPTIONS] \" -to provide multiple additional stack files.")] - pub stack_files: Vec, - - /// Provide one or more additional (custom) release file(s) - #[arg(short, long = "release-file", value_hint = ValueHint::FilePath)] - #[arg(long_help = "Provide one or more additional (custom) release file(s) - -Releases are loaded in the following order: Remote (default) release file, -custom release files provided via the 'STACKABLE_RELEASE_FILES' environment -variable, and lastly release files provided via the '-r/--release-file' -argument(s). If there are releases with the same name, the last release -definition will be used. - -Use \"stackablectl -r path/to/releases1.yaml -r path/to/releases2.yaml [OPTIONS] \" -to provide multiple additional release files.")] - pub release_files: Vec, + #[command(flatten)] + pub files: CommonFileArgs, - /// Provide a custom Helm stable repository URL - #[arg(long, value_name = "URL", value_hint = ValueHint::Url, default_value = HELM_REPO_URL_STABLE)] - pub helm_repo_stable: String, - - /// Provide a custom Helm test repository URL - #[arg(long, value_name = "URL", value_hint = ValueHint::Url, default_value = HELM_REPO_URL_TEST)] - pub helm_repo_test: String, - - /// Provide a custom Helm dev repository URL - #[arg(long, value_name = "URL", value_hint = ValueHint::Url, default_value = HELM_REPO_URL_DEV)] - pub helm_repo_dev: String, + #[command(flatten)] + pub repos: CommonRepoArgs, #[command(subcommand)] pub subcommand: Commands, @@ -117,33 +63,26 @@ impl Cli { /// the default demo file URL, [`REMOTE_DEMO_FILE`], files provided by the ENV variable [`ENV_KEY_DEMO_FILES`], and /// lastly, files provided by the CLI argument `--demo-file`. pub fn get_demo_files(&self) -> Result, PathOrUrlParseError> { - let mut files: Vec = vec![REMOTE_DEMO_FILE.into_path_or_url()?]; - - let env_files = match env::var(ENV_KEY_DEMO_FILES) { - Ok(env_files) => env_files.parse_paths_or_urls()?, - Err(_) => vec![], - }; - files.extend(env_files); + let mut files = get_files(REMOTE_DEMO_FILE, ENV_KEY_DEMO_FILES)?; - let arg_files = self.demo_files.clone().into_paths_or_urls()?; + let arg_files = self.files.demo_files.clone().into_paths_or_urls()?; files.extend(arg_files); Ok(files) } + pub async fn get_demo_list(&self, transfer_client: &FileTransferClient) -> DemoList { + let files = self.get_demo_files().unwrap(); + DemoList::build(&files, transfer_client).await.unwrap() + } + /// Returns a list of stack files, consisting of entries which are either a path or URL. The list of files combines /// the default stack file URL, [`REMOTE_STACK_FILE`], files provided by the ENV variable [`ENV_KEY_STACK_FILES`], /// and lastly, files provided by the CLI argument `--stack-file`. pub fn get_stack_files(&self) -> Result, PathOrUrlParseError> { - let mut files: Vec = vec![REMOTE_STACK_FILE.into_path_or_url()?]; - - let env_files = match env::var(ENV_KEY_STACK_FILES) { - Ok(env_files) => env_files.parse_paths_or_urls()?, - Err(_) => vec![], - }; - files.extend(env_files); + let mut files = get_files(REMOTE_STACK_FILE, ENV_KEY_STACK_FILES)?; - let arg_files = self.stack_files.clone().into_paths_or_urls()?; + let arg_files = self.files.stack_files.clone().into_paths_or_urls()?; files.extend(arg_files); Ok(files) @@ -153,15 +92,9 @@ impl Cli { /// combines the default demo file URL, [`REMOTE_RELEASE_FILE`], files provided by the ENV variable /// [`ENV_KEY_RELEASE_FILES`], and lastly, files provided by the CLI argument `--release-file`. pub fn get_release_files(&self) -> Result, PathOrUrlParseError> { - let mut files: Vec = vec![REMOTE_RELEASE_FILE.into_path_or_url()?]; + let mut files = get_files(REMOTE_RELEASE_FILE, ENV_KEY_RELEASE_FILES)?; - let env_files = match env::var(ENV_KEY_RELEASE_FILES) { - Ok(env_files) => env_files.parse_paths_or_urls()?, - Err(_) => vec![], - }; - files.extend(env_files); - - let arg_files = self.release_files.clone().into_paths_or_urls()?; + let arg_files = self.files.release_files.clone().into_paths_or_urls()?; files.extend(arg_files); Ok(files) @@ -174,13 +107,13 @@ impl Cli { debug!("Add Helm repos"); // Stable repository - helm::add_repo(HELM_REPO_NAME_STABLE, &self.helm_repo_stable)?; + helm::add_repo(HELM_REPO_NAME_STABLE, &self.repos.helm_repo_stable)?; // Test repository - helm::add_repo(HELM_REPO_NAME_TEST, &self.helm_repo_test)?; + helm::add_repo(HELM_REPO_NAME_TEST, &self.repos.helm_repo_test)?; // Dev repository - helm::add_repo(HELM_REPO_NAME_DEV, &self.helm_repo_dev)?; + helm::add_repo(HELM_REPO_NAME_DEV, &self.repos.helm_repo_dev)?; Ok(()) } @@ -254,3 +187,19 @@ pub enum CacheSettingsError { #[snafu(display("unable to resolve XDG directories"))] Xdg { source: xdg::BaseDirectoriesError }, } + +pub struct InheritStackDemoArgs {} + +/// Returns a list of paths or urls based on the default (remote) file and +/// files provided via the env variable. +fn get_files(default_file: &str, env_key: &str) -> Result, PathOrUrlParseError> { + let mut files: Vec = vec![default_file.into_path_or_url()?]; + + let env_files = match env::var(env_key) { + Ok(env_files) => env_files.parse_paths_or_urls()?, + Err(_) => vec![], + }; + files.extend(env_files); + + Ok(files) +} diff --git a/rust/stackablectl/src/cmds/demo.rs b/rust/stackablectl/src/cmds/demo.rs index 02e13f32..28abd6f8 100644 --- a/rust/stackablectl/src/cmds/demo.rs +++ b/rust/stackablectl/src/cmds/demo.rs @@ -4,20 +4,25 @@ use comfy_table::{ ContentArrangement, Row, Table, }; use snafu::{ResultExt, Snafu}; +use tracing::{debug, info, instrument}; use stackable_cockpit::{ common::ListError, + constants::{DEFAULT_OPERATOR_NAMESPACE, DEFAULT_PRODUCT_NAMESPACE}, platform::{ - demo::DemoList, + demo::{DemoError, DemoList}, + namespace::{self, NamespaceError}, release::ReleaseList, - stack::{StackError, StackList}, + stack::StackList, }, utils::path::PathOrUrlParseError, xfer::{cache::Cache, FileTransferClient, FileTransferError}, }; -use tracing::{debug, info, instrument}; -use crate::cli::{Cli, CommonClusterArgs, CommonClusterArgsError, OutputType}; +use crate::{ + args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, + cli::{Cli, OutputType}, +}; #[derive(Debug, Args)] pub struct DemoArgs { @@ -38,8 +43,6 @@ pub enum DemoCommands { /// Install a specific demo #[command(aliases(["i", "in"]))] Install(DemoInstallArgs), - // #[command(aliases(["rm", "un"]))] - // Uninstall(DemoUninstallArgs), } #[derive(Debug, Args)] @@ -76,16 +79,32 @@ Use \"stackablectl demo describe \" to display details about the specified )] demo_name: String, + /// Skip the installation of the release during the stack install process + #[arg( + long, + long_help = "Skip the installation of the release during the stack install process + +Use \"stackablectl operator install [OPTIONS] ...\" to install +required operators manually. Operators MUST be installed in the correct version. + +Use \"stackablectl operator install --help\" to display more information on how +to specify operator versions." + )] + skip_release: bool, + /// List of parameters to use when installing the stack - #[arg(short, long)] + #[arg(long)] stack_parameters: Vec, /// List of parameters to use when installing the demo - #[arg(short, long)] + #[arg(long)] parameters: Vec, #[command(flatten)] local_cluster: CommonClusterArgs, + + #[command(flatten)] + namespaces: CommonNamespaceArgs, } #[derive(Debug, Args)] @@ -108,8 +127,8 @@ pub enum DemoCmdError { #[snafu(display("list error"))] ListError { source: ListError }, - #[snafu(display("stack error"))] - StackError { source: StackError }, + #[snafu(display("demo error"))] + DemoError { source: DemoError }, #[snafu(display("path/url parse error"))] PathOrUrlParseError { source: PathOrUrlParseError }, @@ -117,8 +136,14 @@ pub enum DemoCmdError { #[snafu(display("cluster argument error"))] CommonClusterArgsError { source: CommonClusterArgsError }, - #[snafu(display("transfer error"))] + #[snafu(display("file transfer error"))] TransferError { source: FileTransferError }, + + #[snafu(display("failed to create namespace '{namespace}'"))] + NamespaceError { + source: NamespaceError, + namespace: String, + }, } impl DemoArgs { @@ -220,32 +245,16 @@ async fn install_cmd( ) -> Result { info!("Installing demo {}", args.demo_name); - // Get the demo spec by name from the list let demo_spec = list.get(&args.demo_name).ok_or(DemoCmdError::NoSuchDemo { name: args.demo_name.clone(), })?; - args.local_cluster - .install_if_needed(None) - .await - .context(CommonClusterArgsSnafu)?; - - // Build demo list based on the (default) remote demo file, and additional files provided by the - // STACKABLE_DEMO_FILES env variable or the --demo-files CLI argument. + // TODO (Techassi): Try to move all this boilerplate code to build the lists out of here let files = common_args.get_stack_files().context(PathOrUrlParseSnafu)?; - let stack_list = StackList::build(&files, transfer_client) .await .context(ListSnafu)?; - // Get the stack spec based on the name defined in the demo spec - let stack_spec = stack_list - .get(&demo_spec.stack) - .ok_or(DemoCmdError::NoSuchStack { - name: demo_spec.stack.clone(), - })?; - - // TODO (Techassi): Try to move all this boilerplate code to build the lists out of here let files = common_args .get_release_files() .context(PathOrUrlParseSnafu)?; @@ -260,32 +269,60 @@ async fn install_cmd( .await .context(CommonClusterArgsSnafu)?; - // Install the stack - stack_spec - .install(release_list, &common_args.operator_namespace) - .context(StackSnafu)?; + let operator_namespace = args + .namespaces + .operator_namespace + .clone() + .unwrap_or(DEFAULT_OPERATOR_NAMESPACE.into()); - // Install stack manifests - stack_spec - .install_stack_manifests( - &args.stack_parameters, - &common_args.operator_namespace, - transfer_client, - ) + namespace::create_if_needed(operator_namespace.clone()) + .await + .context(NamespaceSnafu { + namespace: operator_namespace.clone(), + })?; + + let product_namespace = args + .namespaces + .product_namespace + .clone() + .unwrap_or(DEFAULT_PRODUCT_NAMESPACE.into()); + + namespace::create_if_needed(product_namespace.clone()) .await - .context(StackSnafu)?; + .context(NamespaceSnafu { + namespace: product_namespace.clone(), + })?; - // Install demo manifests - stack_spec - .install_demo_manifests( - &demo_spec.manifests, - &demo_spec.parameters, + demo_spec + .install( + stack_list, + release_list, + &operator_namespace, + &product_namespace, + &args.stack_parameters, &args.parameters, - &common_args.operator_namespace, transfer_client, + args.skip_release, ) .await - .context(StackSnafu)?; + .context(DemoSnafu)?; + + let output = format!( + "Installed demo {}\n\n\ + Use \"stackablectl operator installed{}\" to display the installed operators\n\ + Use \"stackablectl stacklet list{}\" to display the installed stacklets", + args.demo_name, + if args.namespaces.operator_namespace.is_some() { + format!(" --operator-namespace {}", operator_namespace) + } else { + "".into() + }, + if args.namespaces.product_namespace.is_some() { + format!(" --product-namespace {}", product_namespace) + } else { + "".into() + } + ); - Ok("".into()) + Ok(output) } diff --git a/rust/stackablectl/src/cmds/operator.rs b/rust/stackablectl/src/cmds/operator.rs index b3d994e3..103a3065 100644 --- a/rust/stackablectl/src/cmds/operator.rs +++ b/rust/stackablectl/src/cmds/operator.rs @@ -12,14 +12,20 @@ use snafu::{ResultExt, Snafu}; use tracing::{debug, info, instrument}; use stackable_cockpit::{ - constants::{HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST}, + constants::{ + DEFAULT_OPERATOR_NAMESPACE, HELM_REPO_NAME_DEV, HELM_REPO_NAME_STABLE, HELM_REPO_NAME_TEST, + }, helm::{self, HelmError, HelmRelease, HelmRepo}, - platform::operator::{OperatorSpec, VALID_OPERATORS}, + platform::{ + namespace::{self, NamespaceError}, + operator::{OperatorSpec, VALID_OPERATORS}, + }, utils, }; use crate::{ - cli::{Cli, CommonClusterArgs, CommonClusterArgsError, OutputType}, + args::{CommonClusterArgs, CommonClusterArgsError}, + cli::{Cli, OutputType}, utils::{helm_repo_name_to_repo_url, InvalidRepoNameError}, }; @@ -31,7 +37,7 @@ pub struct OperatorArgs { #[derive(Debug, Subcommand)] pub enum OperatorCommands { - /// List available (or installed) operators + /// List available operators #[command(alias("ls"))] List(OperatorListArgs), @@ -47,7 +53,7 @@ pub enum OperatorCommands { #[command(aliases(["rm", "un"]))] Uninstall(OperatorUninstallArgs), - /// List installed operator (same as list -i) + /// List installed operators Installed(OperatorInstalledArgs), } @@ -86,6 +92,10 @@ Use \"stackablectl operator list\" to list available versions for all operators Use \"stackablectl operator describe \" to get available versions for one operator")] operators: Vec, + /// Namespace in the cluster used to deploy the operators + #[arg(long, default_value = DEFAULT_OPERATOR_NAMESPACE, visible_aliases(["operator-ns"]))] + pub operator_namespace: String, + #[command(flatten)] local_cluster: CommonClusterArgs, } @@ -95,12 +105,20 @@ pub struct OperatorUninstallArgs { /// One or more operators to uninstall #[arg(required = true)] operators: Vec, + + /// Namespace in the cluster used to deploy the operators + #[arg(long, default_value = DEFAULT_OPERATOR_NAMESPACE, visible_aliases(["operator-ns"]))] + pub operator_namespace: String, } #[derive(Debug, Args)] pub struct OperatorInstalledArgs { #[arg(short, long = "output", value_enum, default_value_t = Default::default())] output_type: OutputType, + + /// Namespace in the cluster used to deploy the operators + #[arg(long, default_value = DEFAULT_OPERATOR_NAMESPACE, visible_aliases(["operator-ns"]))] + pub operator_namespace: String, } #[derive(Debug, Snafu)] @@ -125,6 +143,12 @@ pub enum OperatorCmdError { #[snafu(display("unable to format json output"))] JsonOutputFormatError { source: serde_json::Error }, + + #[snafu(display("failed to create namespace '{namespace}'"))] + NamespaceError { + source: NamespaceError, + namespace: String, + }, } /// This list contains a list of operator version grouped by stable, test and @@ -254,10 +278,16 @@ async fn install_cmd( .await .context(CommonClusterArgsSnafu)?; + namespace::create_if_needed(args.operator_namespace.clone()) + .await + .context(NamespaceSnafu { + namespace: args.operator_namespace.clone(), + })?; + for operator in &args.operators { println!("Installing {} operator", operator.name); - match operator.install(&common_args.operator_namespace) { + match operator.install(&args.operator_namespace) { Ok(_) => println!("Installed {} operator", operator.name), Err(err) => { return Err(OperatorCmdError::HelmError { source: err }); @@ -285,7 +315,7 @@ fn uninstall_cmd( for operator in &args.operators { operator - .uninstall(&common_args.operator_namespace) + .uninstall(&args.operator_namespace) .context(HelmSnafu)?; } @@ -309,7 +339,7 @@ fn installed_cmd( type ReleaseList = IndexMap; - let installed: ReleaseList = helm::list_releases(&common_args.operator_namespace) + let installed: ReleaseList = helm::list_releases(&args.operator_namespace) .context(HelmSnafu)? .into_iter() .filter(|release| { diff --git a/rust/stackablectl/src/cmds/release.rs b/rust/stackablectl/src/cmds/release.rs index 23a76809..b5f7c384 100644 --- a/rust/stackablectl/src/cmds/release.rs +++ b/rust/stackablectl/src/cmds/release.rs @@ -8,12 +8,16 @@ use tracing::{debug, info, instrument}; use stackable_cockpit::{ common::ListError, + constants::DEFAULT_OPERATOR_NAMESPACE, platform::release::{ReleaseInstallError, ReleaseList, ReleaseUninstallError}, utils::path::PathOrUrlParseError, xfer::{cache::Cache, FileTransferClient, FileTransferError}, }; -use crate::cli::{Cli, CommonClusterArgs, CommonClusterArgsError, OutputType}; +use crate::{ + args::{CommonClusterArgs, CommonClusterArgsError}, + cli::{Cli, OutputType}, +}; #[derive(Debug, Args)] pub struct ReleaseArgs { @@ -69,6 +73,10 @@ pub struct ReleaseInstallArgs { #[arg(short, long = "exclude", group = "products")] excluded_products: Vec, + /// Namespace in the cluster used to deploy the operators + #[arg(long, default_value = DEFAULT_OPERATOR_NAMESPACE, visible_aliases(["operator-ns"]))] + pub operator_namespace: String, + #[command(flatten)] local_cluster: CommonClusterArgs, } @@ -78,6 +86,10 @@ pub struct ReleaseUninstallArgs { /// Name of the release to uninstall #[arg(name = "RELEASE")] release: String, + + /// Namespace in the cluster used to deploy the operators + #[arg(long, default_value = DEFAULT_OPERATOR_NAMESPACE, visible_aliases(["operator-ns"]))] + pub operator_namespace: String, } #[derive(Debug, Snafu)] @@ -129,9 +141,7 @@ impl ReleaseArgs { ReleaseCommands::List(args) => list_cmd(args, release_list).await, ReleaseCommands::Describe(args) => describe_cmd(args, release_list).await, ReleaseCommands::Install(args) => install_cmd(args, common_args, release_list).await, - ReleaseCommands::Uninstall(args) => { - uninstall_cmd(args, common_args, release_list).await - } + ReleaseCommands::Uninstall(args) => uninstall_cmd(args, release_list).await, } } } @@ -237,7 +247,7 @@ async fn install_cmd( .install( &args.included_products, &args.excluded_products, - &common_args.operator_namespace, + &args.operator_namespace, ) .context(ReleaseInstallSnafu)?; @@ -249,7 +259,6 @@ async fn install_cmd( async fn uninstall_cmd( args: &ReleaseUninstallArgs, - common_args: &Cli, release_list: ReleaseList, ) -> Result { info!("Installing release"); @@ -257,7 +266,7 @@ async fn uninstall_cmd( match release_list.get(&args.release) { Some(release) => { release - .uninstall(&common_args.operator_namespace) + .uninstall(&args.operator_namespace) .context(ReleaseUninstallSnafu)?; Ok("Installed release".into()) diff --git a/rust/stackablectl/src/cmds/stack.rs b/rust/stackablectl/src/cmds/stack.rs index 637aa6f5..9e6d5678 100644 --- a/rust/stackablectl/src/cmds/stack.rs +++ b/rust/stackablectl/src/cmds/stack.rs @@ -8,7 +8,9 @@ use tracing::{debug, info, instrument}; use stackable_cockpit::{ common::ListError, + constants::{DEFAULT_OPERATOR_NAMESPACE, DEFAULT_PRODUCT_NAMESPACE}, platform::{ + namespace::{self, NamespaceError}, release::ReleaseList, stack::{StackError, StackList}, }, @@ -16,7 +18,10 @@ use stackable_cockpit::{ xfer::{cache::Cache, FileTransferClient, FileTransferError}, }; -use crate::cli::{Cli, CommonClusterArgs, CommonClusterArgsError, OutputType}; +use crate::{ + args::{CommonClusterArgs, CommonClusterArgsError, CommonNamespaceArgs}, + cli::{Cli, OutputType}, +}; #[derive(Debug, Args)] pub struct StackArgs { @@ -59,12 +64,25 @@ pub struct StackInstallArgs { /// Name of the stack to describe stack_name: String, + /// Skip the installation of the release during the stack install process + #[arg( + long, + long_help = "Skip the installation of the release during the stack install process + +Use \"stackablectl operator install [OPTIONS] ...\" to install +required operators manually. Operators MUST be installed in the correct version. + +Use \"stackablectl operator install --help\" to display more information on how +to specify operator versions." + )] + skip_release: bool, + /// List of parameters to use when installing the stack - #[arg(short, long)] + #[arg(long)] stack_parameters: Vec, /// List of parameters to use when installing the stack - #[arg(short, long)] + #[arg(long)] #[arg(long_help = "List of parameters to use when installing the stack All parameters must have the format '='. Multiple parameters @@ -79,6 +97,9 @@ Use \"stackablectl stack describe \" to list available parameters for eac #[command(flatten)] local_cluster: CommonClusterArgs, + + #[command(flatten)] + namespaces: CommonNamespaceArgs, } #[derive(Debug, Snafu)] @@ -103,6 +124,12 @@ pub enum StackCmdError { #[snafu(display("transfer error"))] TransferError { source: FileTransferError }, + + #[snafu(display("failed to create namespace '{namespace}'"))] + NamespaceError { + source: NamespaceError, + namespace: String, + }, } impl StackArgs { @@ -198,7 +225,7 @@ fn describe_cmd(args: &StackDescribeArgs, stack_list: StackList) -> Result { // Install the stack stack_spec - .install(release_list, &common_args.operator_namespace) + .install( + release_list, + &operator_namespace, + &product_namespace, + args.skip_release, + ) .context(StackSnafu)?; // Install stack manifests stack_spec .install_stack_manifests( &args.stack_parameters, - &common_args.operator_namespace, + &product_namespace, transfer_client, ) .await .context(StackSnafu)?; - Ok(format!("Install stack {}", args.stack_name)) + let output = format!( + "Installed stack {}\n\n\ + Use \"stackablectl operator installed{}\" to display the installed operators\n\ + Use \"stackablectl stacklet list{}\" to display the installed stacklets", + args.stack_name, + if args.namespaces.operator_namespace.is_some() { + format!(" --operator-namespace {}", operator_namespace) + } else { + "".into() + }, + if args.namespaces.product_namespace.is_some() { + format!(" --product-namespace {}", product_namespace) + } else { + "".into() + } + ); + + Ok(output) } None => Ok("No such stack".into()), } diff --git a/rust/stackablectl/src/cmds/stacklets.rs b/rust/stackablectl/src/cmds/stacklets.rs index 14945f09..2467569e 100644 --- a/rust/stackablectl/src/cmds/stacklets.rs +++ b/rust/stackablectl/src/cmds/stacklets.rs @@ -10,6 +10,7 @@ use stackable_cockpit::{ }; use crate::{ + args::CommonNamespaceArgs, cli::{Cli, OutputType}, utils::use_colored_output, }; @@ -29,10 +30,6 @@ pub enum StackletCommands { #[derive(Debug, Args)] pub struct StackletListArgs { - /// Will display services of all namespaces, not only the current one - #[arg(short, long)] - all_namespaces: bool, - /// Controls if the output will use color. This only applies to the output /// type 'plain'. #[arg(short = 'c', long = "color")] @@ -40,6 +37,9 @@ pub struct StackletListArgs { #[arg(short, long = "output", value_enum, default_value_t = Default::default())] output_type: OutputType, + + #[command(flatten)] + namespaces: CommonNamespaceArgs, } #[derive(Debug, Snafu)] @@ -69,11 +69,9 @@ async fn list_cmd(args: &StackletListArgs, common_args: &Cli) -> Result