diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 52cf686b8..6b4a900a0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -10,6 +10,14 @@ "forwardPorts": [ 4200 ], + "containerEnv": { + "HTTP_PROXY": "${localEnv:HTTP_PROXY:}", + "HTTPS_PROXY": "${localEnv:HTTPS_PROXY:}", + "NO_PROXY": "${localEnv:NO_PROXY:}", + "http_proxy": "${localEnv:http_proxy:}", + "https_proxy": "${localEnv:https_proxy:}", + "no_proxy": "${localEnv:no_proxy:}" + }, "portsAttributes": { "4200": { "label": "Angular Dev Server", @@ -17,7 +25,7 @@ } }, // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "npm install" + "postCreateCommand": "sed -i 's/\\r$//' .devcontainer/post-create.sh && /bin/bash .devcontainer/post-create.sh" // Configure tool-specific properties. // "customizations": {}, // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh new file mode 100755 index 000000000..c5bea86c6 --- /dev/null +++ b/.devcontainer/post-create.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +# Unset empty proxy variables +for var in HTTP_PROXY HTTPS_PROXY NO_PROXY http_proxy https_proxy no_proxy; do + eval v="\${$var}" + if [ -z "$v" ]; then unset $var; fi +done + +# Strip all trailing '/' or '\\' from proxy URLs for apt config +strip_trailing_slash() { + local url="$1" + # Remove all trailing / or \ + url="${url%%*(/|\\)}" + # Fallback for Bash < 4.0 (no extglob): use sed + echo "$url" | sed 's%[\\/]*$%%' +} + +if [ -n "$HTTP_PROXY" ] || [ -n "$http_proxy" ] || [ -n "$HTTPS_PROXY" ] || [ -n "$https_proxy" ]; then + echo "Configuring apt to use proxy..." + sudo mkdir -p /etc/apt/apt.conf.d + # Remove all trailing / or \\ from proxy URLs + apt_http_proxy="$(strip_trailing_slash "${HTTP_PROXY:-${http_proxy:-}}")" + apt_https_proxy="$(strip_trailing_slash "${HTTPS_PROXY:-${https_proxy:-}}")" + sudo tee /etc/apt/apt.conf.d/99proxy > /dev/null <