FROM rust:latest
LABEL maintainer="Fastly OSS <oss@fastly.com>"

ENV RUSTUP_TOOLCHAIN=$RUST_VERSION
RUN rustup target add wasm32-wasip1 \
  && apt-get update && apt-get install -y curl jq && apt-get -y clean && rm -rf /var/lib/apt/lists/* \
  && cargo install wasm-tools --locked \
  && export FASTLY_CLI_VERSION=$(curl -s https://api.github.com/repos/fastly/cli/releases/latest | jq -r .tag_name | cut -d 'v' -f 2) \
            GOARCH=$(dpkg --print-architecture) \
  && curl -sL "https://github.com/fastly/cli/releases/download/v${FASTLY_CLI_VERSION}/fastly_v${FASTLY_CLI_VERSION}_linux-$GOARCH.tar.gz" -o fastly.tar.gz \
  && curl -sL "https://github.com/fastly/cli/releases/download/v${FASTLY_CLI_VERSION}/fastly_v${FASTLY_CLI_VERSION}_SHA256SUMS" -o sha256sums \
  && dlsha=$(shasum -a 256 fastly.tar.gz | cut -d " " -f 1) && expected=$(cat sha256sums | awk -v pat="$dlsha" '$0~pat' | cut -d " " -f 1) \
  && if [ "$dlsha" != "$expected" ]; then echo "shasums don't match" && exit 1; fi \
  && tar -xzf fastly.tar.gz --directory /usr/bin && rm -f sha256sums fastly.tar.gz \
  && useradd -ms /bin/bash fastly

USER fastly

# Pre-install Viceroy so the image is self-contained (no download at runtime).
# Must run as the `fastly` user, since Viceroy installs into that user's config
# directory (where `compute serve` later looks for it).
RUN fastly compute install-tools

WORKDIR /app
ENTRYPOINT ["/usr/bin/fastly"]
CMD ["--help"]

# docker build -t fastly/cli/rust . -f ./Dockerfile-rust
# docker run -v $PWD:/app -it -p 7676:7676 fastly/cli/rust compute serve --addr="0.0.0.0:7676"
