name: CI

on:
  # Run on pushes, pull-requests, and also once per day
  # (in case deps change under us, etc.)
  push:
  pull_request:
  schedule:
      # Note: '*' is a special character in YAML so we have to quote the str.
      - cron: '0 12 * * *'
        
jobs:

  # We run most of our testing only on linux but it should apply to mac too;
  # we can always add an explicit mac job later if it seems worthwhile.
  check_linux:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v1
    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.8
    - name: Install dependencies
      run: tools/pcommand install_pip_reqs
    - name: Run checks and tests
      run: make -j2 check test

  # Compile just a server binary but don't run asset builds/etc.
  # (to spare my asset file server)
  compile_linux:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v1
    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.8
    - name: Compile binary
      run: make _cmake-simple-ci-server-build
      
  # Most of our toolset doesn't work on raw Windows without WSL set up,
  # but we can bootstrap enough to run a few things manually. It's nice to
  # run unit tests there since some behavior (filesystem, etc) can vary
  # significantly between windows and linux/apple. We also are able to
  # build our windows binary.
  check_and_compile_windows:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v1
    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.8
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install pytest typing_extensions
        python tools/pcommand win_ci_install_prereqs
    - name: Run tests
      run: python tools/pcommand pytest -v tests
    - name: Compile binary
      run: python tools/pcommand win_ci_binary_build
