name: Installation script
on: 
  pull_request:
    paths:
      - .ci/install.sh
  push:
    branches:
      - master
    paths:
      - .ci/install.sh

jobs:
  test_against_latest_release_arm:
    strategy:
      matrix:
        docker_image:
          - arm64v8/ubuntu
          - arm32v7/ubuntu
    name: Test against latest release (ARM)
    runs-on: ubuntu-latest
    steps:
      - name: Set up QEMU
        id: qemu
        uses: docker/setup-qemu-action@v2
      - uses: actions/checkout@v3
      - name: Run installation script in Docker
        run: |
          docker run --rm -v $(pwd):$(pwd) -e "RUST_LOG=fnm=debug" --workdir $(pwd) ${{matrix.docker_image}} bash -c '
            set -e

            apt update && apt install -y unzip curl libatomic1

            echo "-------------------------------------"
            echo "Installing for CPU arch: $(uname -m)"

            bash ./.ci/install.sh

            echo "fnm --version"
            ~/.local/share/fnm/fnm --version

            echo "eval fnm env"
            eval "$(~/.local/share/fnm/fnm env)"

            echo "fnm install"
            ~/.local/share/fnm/fnm install 12

            echo "node -v"
            ~/.local/share/fnm/fnm exec --using=12 -- node -v
          '

  test_against_latest_release:
    name: Test against latest release
    strategy:
      matrix:
        shell: [fish, zsh, bash]
        setup: 
          - os: ubuntu
            script_arguments: ''
          - os: macos
            script_arguments: ''
          - os: macos
            script_arguments: '--force-no-brew'
    runs-on: ${{ matrix.setup.os }}-latest
    steps:
      - uses: actions/checkout@v3
      - run: "sudo apt-get install -y ${{ matrix.shell }}"
        name: Install ${{matrix.shell}} using apt-get
        if: matrix.setup.os == 'ubuntu'
      - run: "brew update && brew install ${{ matrix.shell }}"
        name: Update formulae and install ${{matrix.shell}} using Homebrew
        if: matrix.setup.os == 'macos'
      - run: |
          if [ -f ~/.bashrc ]; then
            cp ~/.bashrc ~/.bashrc.bak
            echo 'echo hello world' > ~/.bashrc
            echo '. ~/.bashrc.bak' >> ~/.bashrc
          fi

          if [ -f ~/.zshrc ]; then
            echo 'echo hello world' > ~/.zshrc
            echo '. ~/.zshrc.bak' >> ~/.zshrc
          fi
        name: reset shell profiles
      - run: "env SHELL=$(which ${{ matrix.shell }}) bash ./.ci/install.sh ${{ matrix.setup.script_arguments }}"
        name: Run the installation script
      - run: ./.ci/test_installation_script.sh ${{ matrix.shell }}
        name: 'Test installation script'