name: Setup
description: Set up CI environment for Rust + 3DS development

inputs:
  toolchain:
    description: The Rust toolchain to use for the steps
    required: true
    default: nightly

runs:
  using: composite
  steps:
    # https://github.com/nektos/act/issues/917#issuecomment-1074421318
    - if: ${{ env.ACT }}
      shell: bash
      name: Hack container for local development
      run: |
          curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
          sudo apt-get install -y nodejs

    - name: Setup default Rust toolchain
      # Use this helper action so we get matcher support
      # https://github.com/actions-rust-lang/setup-rust-toolchain/pull/15
      uses: actions-rust-lang/setup-rust-toolchain@v1
      with:
        components: clippy, rustfmt, rust-src
        toolchain: ${{ inputs.toolchain }}

    - name: Install build tools for host
      shell: bash
      run: sudo apt-get update && sudo apt-get install -y build-essential

    - name: Install cargo-3ds
      uses: actions-rs/cargo@v1
      with:
        command: install
        # TODO: this should probably just be a released version from crates.io
        # once cargo-3ds gets published somewhere...
        #
        # also switch to master hash once feature/doctests gets merged
        args: >-
          --git https://github.com/rust3ds/cargo-3ds
          --rev 5a06e64307499ffe681453e7d88d7ee986054eb7

    - name: Set PATH to include devkitARM
      shell: bash
      # For some reason devkitARM/bin is not part of the default PATH in the container
      run: echo "${DEVKITARM}/bin" >> $GITHUB_PATH