name: Build ZAPD

on:
  push:
  pull_request:
    branches:
      - master

jobs:
  build:
    runs-on: self-hosted-runner

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Build ZAPD
      run: make -j WERROR=1

    - name: Checkout Repos
      run: echo "Checkout Repos"

    - name: Checkout oot
      run: |
        cd ../
        rm -rf oot/
        git clone https://github.com/zeldaret/oot.git
        cd oot
        echo $(pwd)
        git submodule update --init --recursive

    - name: Checkout mm
      run: |
        cd ../
        rm -rf mm/
        git clone https://github.com/zeldaret/mm.git
        cd mm
        echo $(pwd)

    - name: Set up repos
      run: echo "Set up repos"

    - name: Setup OOT
      run: |
        cd ../
        cd oot
        echo $(pwd)
        mkdir -p baseroms/gc-eu-mq-dbg/segments
        cp ~/baserom_original.z64 ./baseroms/gc-eu-mq-dbg/baserom.z64
        cd tools
        rm -rf ZAPD/
        ln -s ../../ZAPD 
        cd ../
        make -j $(nproc) setup

    - name: Setup MM
      run: |
        cd ../
        cd mm
        echo $(pwd)
        python3 -m venv .mm-env
        source .mm-env/bin/activate 
        python3 -m pip install -r requirements.txt
        cp ~/baserom.mm.us.rev1.z64 ./baserom.mm.us.rev1.z64
        cd tools
        rm -rf ZAPD/
        ln -s ../../ZAPD
        cd ../
        make -C tools -j
        python3 tools/fixbaserom.py
        python3 tools/extract_baserom.py
        python3 tools/decompress_yars.py
        python3 extract_assets.py -j $(nproc)

    - name: Build Repos
      run: echo "Build Repos"

    - name: Build oot
      run: |
        cd ../
        cd oot
        echo $(pwd)
        make venv
        make -j

    - name: Build mm
      run: |
        cd ../
        cd mm
        echo $(pwd)
        python3 -m venv .mm-env
        source .mm-env/bin/activate 
        python3 -m pip install -r requirements.txt
        make -j disasm
        make -j

    - name: Clean workspace
      run: git clean -fdX