Skip to content
This repository was archived by the owner on Nov 30, 2023. It is now read-only.

Commit b99598d

Browse files
authored
Use new "options" property in features.json
1 parent e9b4634 commit b99598d

File tree

5 files changed

+101
-59
lines changed

5 files changed

+101
-59
lines changed
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
_VSC_INSTALL_DOCKER_IN_DOCKER=docker-in-docker-debian.sh
2-
_VSC_INSTALL_DOCKER_FROM_DOCKER=docker-debian.sh
1+
_VSC_INSTALL_DOCKER_IN_DOCKER="docker-in-docker-debian.sh true automatic ${_BUILD_ARG_DOCKER_IN_DOCKER_MOBY:-true}"
2+
_VSC_INSTALL_DOCKER_FROM_DOCKER="docker-debian.sh true /var/run/docker-host.sock /var/run/docker.sock automatic ${_BUILD_ARG_DOCKER_FROM_DOCKER_MOBY:-true}"
33
_VSC_INSTALL_KUBECTL_HELM_MINIKUBE="kubectl-helm-debian.sh ${_BUILD_ARG_KUBECTL_HELM_MINIKUBE_VERSION:-latest} ${_BUILD_ARG_KUBECTL_HELM_MINIKUBE_HELM:-latest} ${_BUILD_ARG_KUBECTL_HELM_MINIKUBE_MINIKUBE:-latest}"
44
_VSC_INSTALL_TERRAFORM="terraform-debian.sh ${_BUILD_ARG_TERRAFORM_VERSION:-latest} ${_BUILD_ARG_TERRAFORM_TFLINT:-latest} ${_BUILD_ARG_TERRAFORM_TERRAGRUNT:-latest}"
55
_VSC_INSTALL_GIT="git-from-src-debian.sh latest true"
@@ -8,13 +8,13 @@ _VSC_INSTALL_GITHUB_CLI=github-debian.sh
88
_VSC_INSTALL_AZURE_CLI=azcli-debian.sh
99
_VSC_INSTALL_SSH=sshd-debian.sh
1010
_VSC_INSTALL_HOMEBREW=homebrew-debian.sh
11-
_VSC_NODE_VERSION="node-debian.sh /usr/local/share/nvm ${_VSC_NODE_VERSION:-"lts/*"}"
12-
_VSC_PYTHON_VERSION="python-debian.sh ${_VSC_PYTHON_VERSION:-latest} /usr/local/python /usr/local/py-utils"
13-
_VSC_GOLANG_VERSION="go-debian.sh ${_VSC_GOLANG_VERSION:-latest}"
14-
_VSC_JAVA_VERSION="java-wrapper.sh ${_VSC_JAVA_VERSION:-latest}"
15-
_VSC_MAVEN_VERSION="maven-debian.sh ${_VSC_MAVEN_VERSION:-latest}"
16-
_VSC_GRADLE_VERSION="gradle-debian.sh ${_VSC_GRADLE_VERSION:-latest}"
17-
_VSC_RUBY_VERSION="ruby-debian.sh ${_VSC_RUBY_VERSION:-latest}"
11+
_VSC_INSTALL_NODE="node-debian.sh /usr/local/share/nvm ${_BUILD_ARG_NODE_VERSION:-lts/*} automatic true ${_BUILD_ARG_NODE_NODEGYPDEPENDENCIES:-true}"
12+
_VSC_INSTALL_PYTHON="python-debian.sh ${_BUILD_ARG_PYTHON_VERSION:-latest} /usr/local/python /usr/local/py-utils"
13+
_VSC_INSTALL_GOLANG="go-debian.sh ${_BUILD_ARG_GOLANG_VERSION:-latest}"
14+
_VSC_INSTALL_JAVA="java-wrapper.sh ${_BUILD_ARG_JAVA_VERSION:-latest}"
15+
_VSC_INSTALL_GRADLE="gradle-debian.sh ${_BUILD_ARG_GRADLE_VERSION:-latest}"
16+
_VSC_INSTALL_MAVEN="maven-debian.sh ${_BUILD_ARG_MAVEN_VERSION:-latest}"
17+
_VSC_INSTALL_RUBY="ruby-debian.sh ${_BUILD_ARG_RUBY_VERSION:-latest}"
1818
_VSC_INSTALL_RUST=rust-debian.sh
1919
_VSC_INSTALL_POWERSHELL=powershell-debian.sh
2020
_VSC_INSTALL_DESKTOP_LITE=desktop-lite-debian.sh

script-library/container-features/src/features.json

Lines changed: 83 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// Problem #1 - you should be able to pick docker-in-docker or docker-from-docker, but not both, and settings need to be different
44
{
55
"id": "docker-in-docker",
6-
"name": "Docker (Moby) CLI/Engine (Docker-in-Docker)",
6+
"name": "Docker (Moby) support (Docker-in-Docker)",
77
"type": "option",
88
"default": false,
99
"buildArg": "_VSC_INSTALL_DOCKER_IN_DOCKER",
@@ -50,7 +50,7 @@
5050
},
5151
{
5252
"id": "docker-from-docker",
53-
"name": "Docker (Moby) CLI, reuse host Docker Engine",
53+
"name": "Docker (Moby) support, reuse host Docker Engine (Docker-from-Docker)",
5454
"type": "option",
5555
"default": false,
5656
"buildArg": "_VSC_INSTALL_DOCKER_FROM_DOCKER",
@@ -97,11 +97,15 @@
9797
{
9898
"id": "kubectl-helm-minikube",
9999
"name": "Kubectl, Helm, and Minkube",
100-
"type": "choice",
101-
"values": ["latest", "1.22.2"],
100+
"options": {
101+
"version": {
102+
"type": "string",
103+
"proposals": ["latest", "1.22", "1.21", "1.20"],
104+
"default": "latest",
105+
"description": "Select or enter a Kubernetes version to install"
106+
}
107+
},
102108
// Expects: helm, minikube
103-
"customValues": true,
104-
"default": false,
105109
"init": true,
106110
"buildArg": "_VSC_INSTALL_KUBECTL_HELM_MINIKUBE",
107111
"extensions": [
@@ -143,18 +147,20 @@
143147
{
144148
"id": "terraform",
145149
"name": "Terraform, tflint, and TFGrunt",
146-
"type": "choice",
147-
"values": ["latest", "1.0.7"],
150+
"options": {
151+
"version": {
152+
"type": "string",
153+
"proposals": ["latest", "1.0", "0.15"],
154+
"default": "latest",
155+
"description": "Terraform version"
156+
}
157+
},
148158
// Expects versions for: tflint, terragrunt
149-
"customValues": true,
150-
"default": false,
151159
"init": true,
152160
"buildArg": "_VSC_INSTALL_TERRAFORM",
153161
"extensions": [
154162
"HashiCorp.terraform",
155-
"ms-vscode.azurecli",
156-
"ms-azuretools.vscode-azureterraform",
157-
"ms-azuretools.vscode-docker"
163+
"ms-azuretools.vscode-azureterraform"
158164
],
159165
"settings": {
160166
"terraform.languageServer": {
@@ -450,16 +456,20 @@
450456
{
451457
"id": "node",
452458
"name": "Node.js (via nvm) and yarn",
453-
"hint": "Select node version to install",
454-
"type": "choice",
455-
"values": [ "lts", "latest","16", "14", "12" ],
456-
"default": false,
459+
"options": {
460+
"version": {
461+
"type": "string",
462+
"proposals": [ "lts","latest","16", "14", "12" ],
463+
"default": "lts",
464+
"description": "Select or enter a Node.js version to install"
465+
}
466+
},
457467
"init": true,
458-
"buildArg": "_VSC_NODE_VERSION",
468+
"buildArg": "_VSC_INSTALL_NODE",
459469
"extensions": ["dbaeumer.vscode-eslint"],
460470
"containerEnv": {
461471
"NVM_DIR":"/usr/local/share/nvm",
462-
"NVM_SYMLINK_CURRENT": true,
472+
"NVM_SYMLINK_CURRENT": "true",
463473
"PATH": "${NVM_DIR}/current/bin:${PATH}"
464474
}, "include": [
465475
"azure-cli",
@@ -483,12 +493,17 @@
483493
{
484494
"id": "python",
485495
"name": "Python (may require compilation)",
486-
"hint": "Select python version to install",
487-
"type": "choice",
488-
"values": ["latest", "3.9", "3.8", "3.7", "3.6"],
496+
"options": {
497+
"version": {
498+
"type": "string",
499+
"enum": ["latest", "3.9", "3.8", "3.7", "3.6"],
500+
"default": "latest",
501+
"description": "Select a Python version to install"
502+
}
503+
},
489504
"init": true,
490505
"default": false,
491-
"buildArg": "_VSC_PYTHON_VERSION",
506+
"buildArg": "_VSC_INSTALL_PYTHON",
492507
"extensions": [
493508
"ms-python.python",
494509
"ms-python.vscode-pylance"
@@ -546,12 +561,16 @@
546561
{
547562
"id": "golang",
548563
"name": "Go",
549-
"hint": "Select go version to install",
550-
"type": "choice",
551-
"values": ["latest", "1.17", "1.16"],
564+
"options": {
565+
"version": {
566+
"type": "string",
567+
"proposals": ["latest", "1.17", "1.16"],
568+
"default": "latest",
569+
"description": "Select or enter a Go version to install"
570+
}
571+
},
552572
"init": true,
553-
"default": false,
554-
"buildArg": "_VSC_GO_VERSION",
573+
"buildArg": "_VSC_INSTALL_GOLANG",
555574
"extensions": ["golang.Go"],
556575
"containerEnv": {
557576
"GOPATH": "/go",
@@ -599,12 +618,16 @@
599618
{
600619
"id": "java",
601620
"name": "Java (via SDKMAN!)",
602-
"hint": "Select java version to install",
603-
"type": "choice",
604-
"values": ["lts", "latest", "16", "11", "8"],
621+
"options": {
622+
"version": {
623+
"type": "string",
624+
"proposals": ["lts", "latest", "16", "11", "8"],
625+
"default": "lts",
626+
"description": "Select or enter a Java version to install"
627+
}
628+
},
605629
"init": true,
606-
"default": false,
607-
"buildArg": "_VSC_JAVA_VERSION",
630+
"buildArg": "_VSC_INSTALL_JAVA",
608631
"extensions": ["vscjava.vscode-java-pack"],
609632
"containerEnv": {
610633
"SDKMAN_DIR": "/usr/local/sdkman",
@@ -647,12 +670,16 @@
647670
{
648671
"id": "maven",
649672
"name": "Maven (via SDKMAN!)",
650-
"hint": "Select maven version to install",
651-
"type": "choice",
652-
"values": ["latest", "3.8", "3.6", "3.5"],
673+
"options": {
674+
"version": {
675+
"type": "string",
676+
"proposals": ["latest", "3.8", "3.6", "3.5"],
677+
"default": "latest",
678+
"description": "Select or enter a Maven version to install"
679+
}
680+
},
653681
"init": true,
654-
"default": false,
655-
"buildArg": "_VSC_MAVEN_VERSION",
682+
"buildArg": "_VSC_INSTALL_MAVEN",
656683
"extensions": ["vscjava.vscode-java-pack"],
657684
"containerEnv": {
658685
"SDKMAN_DIR": "/usr/local/sdkman",
@@ -690,12 +717,16 @@
690717
{
691718
"id": "gradle",
692719
"name": "Gradle (via SDKMAN!)",
693-
"hint": "Select gradle version to install",
694-
"type": "choice",
695-
"values": ["latest", "7", "6", "5"],
696-
"default": false,
720+
"options": {
721+
"version": {
722+
"type": "string",
723+
"proposals": ["latest", "7", "6", "5"],
724+
"default": "latest",
725+
"description": "Select or enter a Gradle version to install"
726+
}
727+
},
697728
"init": true,
698-
"buildArg": "_VSC_GRADLE_VERSION",
729+
"buildArg": "_VSC_INSTALL_GRADLE",
699730
"extensions": ["vscjava.vscode-java-pack"],
700731
"containerEnv": {
701732
"SDKMAN_DIR": "/usr/local/sdkman",
@@ -732,12 +763,16 @@
732763
{
733764
"id": "ruby",
734765
"name": "Ruby (via rvm)",
735-
"hint": "Select ruby version to install",
736-
"type": "choice",
737-
"values": ["latest", "3.0", "2.7", "2.6"],
738-
"default": false,
766+
"options": {
767+
"version": {
768+
"type": "string",
769+
"proposals": ["latest", "3.0", "2.7", "2.6"],
770+
"default": "latest",
771+
"description": "Select or enter a Ruby version to install"
772+
}
773+
},
739774
"init": true,
740-
"buildArg": "_VSC_RUBY_VERSION",
775+
"buildArg": "_VSC_INSTALL_RUBY",
741776
"extensions": [
742777
"rebornix.Ruby"
743778
],

script-library/container-features/src/install.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env bash
22
set -e
3+
cd "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
34

45
# Verify we're on a supported OS
56
. /etc/os-release

script-library/container-features/src/java-wrapper.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ USERNAME=${3:-"automatic"}
99
UPDATE_RC=${4:-"true"}
1010
ADDITIONAL_JAVA_VERSION=11
1111

12+
cd "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
13+
chmod +x java-debian.sh
14+
1215
is_jdk_8="false"
1316
if echo "${JAVA_VERSION}" | grep -E '^8([\s\.]|$)' > /dev/null 2>&1; then
1417
is_jdk_8="true"
@@ -17,7 +20,7 @@ fi
1720
# If the user selected JDK 8, install the JDK 11 as well since this is needed by the Java extension
1821
if [ "${is_jdk_8}" = "true" ]; then
1922
echo "(*) Installing JDK ${ADDITIONAL_JAVA_VERSION} as Java VS Code extension requires a recent JDK..."
20-
/tmp/build-features/java-debian.sh "${ADDITIONAL_JAVA_VERSION}" "${SDKMAN_DIR}" "${USERNAME}" "${UPDATE_RC}"
23+
./java-debian.sh "${ADDITIONAL_JAVA_VERSION}" "${SDKMAN_DIR}" "${USERNAME}" "${UPDATE_RC}"
2124
jdk_11_folder="$(ls --format=single-column ${SDKMAN_DIR}/candidates/java | grep -oE -m 1 '11\..+')"
2225
ln -s "${SDKMAN_DIR}/candidates/java/${jdk_11_folder}" /extension-java-home
2326

@@ -38,7 +41,7 @@ else
3841
fi
3942

4043
echo "(*) Installing JDK ${JAVA_VERSION}..."
41-
/tmp/build-features/java-debian.sh "${JAVA_VERSION}" "${SDKMAN_DIR}" "${USERNAME}" "${UPDATE_RC}"
44+
./java-debian.sh "${JAVA_VERSION}" "${SDKMAN_DIR}" "${USERNAME}" "${UPDATE_RC}"
4245
if [ "${is_jdk_8}" = "true" ]; then
4346
# Set current and default version to last SDK installed
4447
jdk_full_version="$(ls --format=single-column "${SDKMAN_DIR}/candidates/java" | sort -rV | grep -oE -m 1 "${JAVA_VERSION}\\..+" )"

script-library/node-debian.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ elif [ "${NODE_VERSION}" = "lts" ]; then
100100
export NODE_VERSION="lts/*"
101101
fi
102102

103+
# Create a symlink to the installed version for use in Dockerfile PATH statements
104+
export NVM_SYMLINK_CURRENT=true
105+
103106
# Install the specified node version if NVM directory already exists, then exit
104107
if [ -d "${NVM_DIR}" ]; then
105108
echo "NVM already installed."

0 commit comments

Comments
 (0)