# This template installs Rust (if doesn't exist in the systems)
# Also installs the desired Rust toolchain

# Template inspired by Tokio and wasm-bindgen templates
# Tokio template: https://github.com/tokio-rs/tokio/blob/master/ci/azure-install-rust.yml
# Wasm-bindgen template: https://github.com/rustwasm/wasm-bindgen/blob/master/ci/azure-install-rust.yml

steps:
  # - bash: |
  #     set -ex
  #     brew install openssl@1.1 curl
  #     brew link openssl@1.1 --force
  #     echo "##vso[task.prependpath]/usr/local/opt/openssl/bin"
  #     echo "##vso[task.setvariable variable=LDFLAGS;]-L/usr/local/opt/openssl/lib"
  #     echo "##vso[task.setvariable variable=CPPFLAGS;]-I/usr/local/opt/openssl/include"
  #   displayName: "Fix Cargo SSL (macOS)"
  #   condition: eq(variables['Agent.OS'], 'Darwin')
  - bash: |
      set -ex
      if [ -x "`command -v rustup`" ]; then
        echo `command -v rustup` `rustup -V` installed
      else
        curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUST_TOOLCHAIN
        echo "##vso[task.prependpath]$HOME/.cargo/bin"
      fi
    displayName: "Install Rust (Linux, macOS)"
    condition: ne(variables['Agent.OS'], 'Windows_NT')

  # - bash: |
  #     set -ex
  #     if [ -x "`command -v rustup`" ]; then
  #       echo `command -v rustup` `rustup -V` installed
  #     else
  #       choco install rust -y
  #       # curl -sSf -o rustup-init.exe https://win.rustup.rs
  #       # ./rustup-init.exe -y --default-toolchain $RUST_TOOLCHAIN
  #       # echo "##vso[task.prependpath]$USERPROFILE/.cargo/bin"
  #     fi
  #   displayName: "Install Rust (Windows)"
  #   condition: eq(variables['Agent.OS'], 'Windows_NT')

  - bash: |
      set -ex
      rustup update --no-self-update $RUST_TOOLCHAIN
      rustup default $RUST_TOOLCHAIN
      rustup target add x86_64-unknown-linux-musl
      rustup target add wasm32-wasi

      if [ -n "$ANDROID" ]; then
        rustup target add x86_64-linux-android --toolchain $RUST_TOOLCHAIN
      fi

      rustc -Vv
      cargo -V
    displayName: Install Rust

  - bash: echo "##vso[task.setvariable variable=RUSTC_VERSION;]`rustc --version`"
    displayName: Set rustc version in env var
