# defaults for any parameters that aren't specified
parameters:
  rust_version: stable

steps:
  # Linux and macOS
  - script: |
      set -e
      curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN
      echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin:/usr/local/cargo/bin"
    env:
      RUSTUP_TOOLCHAIN: ${{parameters.rust_version}}
    displayName: "Install rust (*nix)"
    condition: not(eq(variables['Agent.OS'], 'Windows_NT'))
  # Windows
  - script: |
      curl -sSf -o rustup-init.exe https://win.rustup.rs
      rustup-init.exe -y --default-toolchain %RUSTUP_TOOLCHAIN%
      set PATH=%PATH%;%USERPROFILE%\.cargo\bin
      echo "##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin"
    env:
      RUSTUP_TOOLCHAIN: ${{parameters.rust_version}}
    displayName: "Install rust (windows)"
    condition: eq(variables['Agent.OS'], 'Windows_NT')
  # Install additional components:
  - ${{ each component in parameters.components }}:
      - script: rustup component add ${{ component }}

  # TEMPORATY FIX UNTIL https://github.com/rust-embedded/cross/pull/169 is merged.
  - script: |
      git config --global user.email "not_necessery@dont.need"
      git config --global user.name "I merge the things"
      git clone https://github.com/rust-embedded/cross
      cd cross
      git remote add pitkley https://github.com/pitkley/cross
      git fetch pitkley
      git checkout 718a19c
      git merge -m "No pseudo tty" pitkley/docker-no-pseudo-tty
      cargo install --force --path .
    displayName: Install cross
  # All platforms
  - script: |
      rustup -V
      rustup component list --installed
      rustc -Vv
      cargo -V
    displayName: Query rust and cargo versions
