#!/usr/bin/env bash DENO_VERSION="${VERSION:-"latest"}" set -e 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.' exit 1 fi # Clean up rm -rf /var/lib/apt/lists/* if [ "$OS" = "Windows_NT" ]; then target="x86_64-pc-windows-msvc" else case $(uname -sm) in "Darwin x86_64") target="x86_64-apple-darwin" ;; "Darwin arm64") target="aarch64-apple-darwin" ;; "Linux aarch64") echo "Error: Official Deno builds for Linux aarch64 are not available. (https://github.com/denoland/deno/issues/1846)" 1>&2 exit 1 ;; *) target="x86_64-unknown-linux-gnu" ;; esac fi # Checks if packages are installed and installs them if not check_packages() { if ! dpkg -s "$@" >/dev/null 2>&1; then if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then echo "Running apt-get update..." apt-get update -y fi apt-get -y install --no-install-recommends "$@" fi } # make sure we have curl check_packages ca-certificates curl if [ "${DENO_VERSION}" == "latest" ]; then deno_uri="https://github.com/denoland/deno/releases/latest/download/deno-${target}.zip" else deno_uri="https://github.com/denoland/deno/releases/download/v${DENO_VERSION}/deno-${target}.zip" fi deno_install="/usr/local/lib/deno" bin_dir="$deno_install/bin" exe="$bin_dir/deno" if [ ! -d "$bin_dir" ]; then mkdir -p "$bin_dir" fi curl --fail --location --progress-bar --output "$exe.zip" "$deno_uri" unzip -d "$bin_dir" -o "$exe.zip" chmod +x "$exe" rm "$exe.zip" ln -s $exe /usr/local/bin/deno # Clean up rm -rf /var/lib/apt/lists/* echo "Done!"