From e0bd5666b97001b87f34ab4a0575cd731b070fb1 Mon Sep 17 00:00:00 2001 From: Jed Laundry Date: Wed, 4 Oct 2023 20:57:39 +0000 Subject: [PATCH 1/2] add optional packages to google-cloud-cli --- .../devcontainer-feature.json | 121 +++++++++++++++++- src/google-cloud-cli/install.sh | 42 +++++- 2 files changed, 154 insertions(+), 9 deletions(-) diff --git a/src/google-cloud-cli/devcontainer-feature.json b/src/google-cloud-cli/devcontainer-feature.json index 017a0e4..5f05037 100644 --- a/src/google-cloud-cli/devcontainer-feature.json +++ b/src/google-cloud-cli/devcontainer-feature.json @@ -1,7 +1,7 @@ { "name": "Google Cloud CLI", "id": "google-cloud-cli", - "version": "1.0.1", + "version": "1.0.2", "description": "Install google-cloud-cli", "documentationURL": "https://github.com/dhoeric/features/tree/main/src/google-cloud-cli", "options": { @@ -10,10 +10,125 @@ "default": "latest", "description": "Select or enter a gcloud CLI version" }, - "installGkeGcloudAuthPlugin": { + "installanthosauth": { "type": "boolean", "default": false, - "description": "Install 'gke-gcloud-auth-plugin' plugin?" + "description": "Also install 'google-cloud-cli-anthos-auth'" + }, + "installappenginego": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-app-engine-go'" + }, + "installappenginegrpc": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-app-engine-grpc'" + }, + "installappenginejava": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-app-engine-java'" + }, + "installappenginepython": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-app-engine-python'" + }, + "installappenginepythonextras": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-app-engine-python-extras'" + }, + "installbigtableemulator": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-bigtable-emulator'" + }, + "installcbt": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-cbt'" + }, + "installcloudbuildlocal": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-cloud-build-local'" + }, + "installcloudrunproxy": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-cloud-run-proxy'" + }, + "installconfigconnector": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-config-connector'" + }, + "installdatastoreemulator": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-datastore-emulator'" + }, + "installfirestoreemulator": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-firestore-emulator'" + }, + "installgkegcloudauthplugin": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-gke-gcloud-auth-plugin'" + }, + "installkpt": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-kpt'" + }, + "installkubectloidc": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-kubectl-oidc'" + }, + "installlocalextract": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-local-extract'" + }, + "installminikube": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-minikube'" + }, + "installnomos": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-nomos'" + }, + "installpubsubemulator": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-pubsub-emulator'" + }, + "installskaffold": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-skaffold'" + }, + "installspanneremulator": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-spanner-emulator'" + }, + "installterraformvalidator": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-terraform-validator'" + }, + "installtests": { + "type": "boolean", + "default": false, + "description": "Also install 'google-cloud-cli-tests'" } }, "installsAfter": [ diff --git a/src/google-cloud-cli/install.sh b/src/google-cloud-cli/install.sh index dfdb1a0..e31c462 100644 --- a/src/google-cloud-cli/install.sh +++ b/src/google-cloud-cli/install.sh @@ -6,7 +6,32 @@ set -e rm -rf /var/lib/apt/lists/* GCLOUD_VERSION=${VERSION:-"latest"} -INSTALL_GKEGCLOUDAUTH_PLUGIN="${INSTALL_GKEGCLOUDAUTH_PLUGIN:-"false"}" +OPTIONAL_PACKAGES=( + "google-cloud-cli-anthos-auth" + "google-cloud-cli-app-engine-go" + "google-cloud-cli-app-engine-grpc" + "google-cloud-cli-app-engine-java" + "google-cloud-cli-app-engine-python" + "google-cloud-cli-app-engine-python-extras" + "google-cloud-cli-bigtable-emulator" + "google-cloud-cli-cbt" + "google-cloud-cli-cloud-build-local" + "google-cloud-cli-cloud-run-proxy" + "google-cloud-cli-config-connector" + "google-cloud-cli-datastore-emulator" + "google-cloud-cli-firestore-emulator" + "google-cloud-cli-gke-gcloud-auth-plugin" + "google-cloud-cli-kpt" + "google-cloud-cli-kubectl-oidc" + "google-cloud-cli-local-extract" + "google-cloud-cli-minikube" + "google-cloud-cli-nomos" + "google-cloud-cli-pubsub-emulator" + "google-cloud-cli-skaffold" + "google-cloud-cli-spanner-emulator" + "google-cloud-cli-terraform-validator" + "google-cloud-cli-tests" +) if [ "$(id -u)" -ne 0 ]; then echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.' @@ -89,11 +114,16 @@ install_using_apt() { return 1 fi - # Install gke-gcloud-auth-plugin if needed - if [ "${INSTALL_GKEGCLOUDAUTH_PLUGIN}" = "true" ]; then - echo "(*) Installing 'gke-gcloud-auth-plugin' plugin..." - check_packages google-cloud-sdk-gke-gcloud-auth-plugin - fi + for pkg in ${OPTIONAL_PACKAGES[@]}; do + pkg_install_env=$(echo $pkg | sed 's/google-cloud-cli-/install/' | sed 's/-//g' | tr '[:lower:]' '[:upper:]') + #echo "DEBUG ${pkg_install_env}=${!pkg_install_env}" + if ! [ -z "${!pkg_install_env}" ] && ${!pkg_install_env}; then + echo "(*) Installing '${pkg}'" + check_packages $pkg + else + echo "( ) Skipping '${pkg}'" + fi + done } echo "(*) Installing google-cloud CLI..." From 6350c67b20bf5c18eb13afa95b3219fbfef82c8d Mon Sep 17 00:00:00 2001 From: Jed Laundry Date: Thu, 5 Oct 2023 12:00:33 +1300 Subject: [PATCH 2/2] manual README update --- src/google-cloud-cli/README.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/google-cloud-cli/README.md b/src/google-cloud-cli/README.md index f282c58..eec83c8 100644 --- a/src/google-cloud-cli/README.md +++ b/src/google-cloud-cli/README.md @@ -16,7 +16,30 @@ Install google-cloud-cli | Options Id | Description | Type | Default Value | |-----|-----|-----|-----| | version | Select or enter a gcloud CLI version | string | latest | -| installGkeGcloudAuthPlugin | Install 'gke-gcloud-auth-plugin' plugin? | boolean | false | +| installanthosauth | Also install 'google-cloud-cli-anthos-auth' | boolean | false | +| installappenginego | Also install 'google-cloud-cli-app-engine-go' | boolean | false | +| installappenginegrpc | Also install 'google-cloud-cli-app-engine-grpc' | boolean | false | +| installappenginejava | Also install 'google-cloud-cli-app-engine-java' | boolean | false | +| installappenginepython | Also install 'google-cloud-cli-app-engine-python' | boolean | false | +| installappenginepythonextras | Also install 'google-cloud-cli-app-engine-python-extras' | boolean | false | +| installbigtableemulator | Also install 'google-cloud-cli-bigtable-emulator' | boolean | false | +| installcbt | Also install 'google-cloud-cli-cbt' | boolean | false | +| installcloudbuildlocal | Also install 'google-cloud-cli-cloud-build-local' | boolean | false | +| installcloudrunproxy | Also install 'google-cloud-cli-cloud-run-proxy' | boolean | false | +| installconfigconnector | Also install 'google-cloud-cli-config-connector' | boolean | false | +| installdatastoreemulator | Also install 'google-cloud-cli-datastore-emulator' | boolean | false | +| installfirestoreemulator | Also install 'google-cloud-cli-firestore-emulator' | boolean | false | +| installgkegcloudauthplugin | Also install 'google-cloud-cli-gke-gcloud-auth-plugin' | boolean | false | +| installkpt | Also install 'google-cloud-cli-kpt' | boolean | false | +| installkubectloidc | Also install 'google-cloud-cli-kubectl-oidc' | boolean | false | +| installlocalextract | Also install 'google-cloud-cli-local-extract' | boolean | false | +| installminikube | Also install 'google-cloud-cli-minikube' | boolean | false | +| installnomos | Also install 'google-cloud-cli-nomos' | boolean | false | +| installpubsubemulator | Also install 'google-cloud-cli-pubsub-emulator' | boolean | false | +| installskaffold | Also install 'google-cloud-cli-skaffold' | boolean | false | +| installspanneremulator | Also install 'google-cloud-cli-spanner-emulator' | boolean | false | +| installterraformvalidator | Also install 'google-cloud-cli-terraform-validator' | boolean | false | +| installtests | Also install 'google-cloud-cli-tests' | boolean | false |