name: CI
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
jobs:
  test:
    runs-on: ubuntu-latest
    env:
      DJANGO_SETTINGS_MODULE: babybuddy.settings.ci
      PIPENV_VENV_IN_PROJECT: enabled
    strategy:
      matrix:
        python-version: [ '3.6', '3.7', '3.8', '3.9', '3.10' ]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      - uses: actions/setup-node@v2
        with:
          node-version: '14'
      - run: npm install -g gulp-cli
      - run: npm install
      - name: Install pipenv
        run: |
          python -m pip install --upgrade pipenv wheel
#      - name: Cache Python dependencies
#        id: cache-pipenv
#        uses: actions/cache@v2
#        with:
#          path: ./.venv
#          key: ${{ runner.os }}-python-${{ matrix.python-version }}-pipenv-${{ hashFiles('**/requirements.txt') }}
#          restore-keys: |
#            ${{ runner.os }}-python-${{ matrix.python-version }}-pipenv-
      - name: Install dependencies
#        if: steps.cache-pipenv.outputs.cache-hit != 'true'
        run: |
          pipenv install --dev
      - run: gulp lint
      - run: gulp coverage
      - name: Submit results to Coveralls
        uses: AndreMiras/coveralls-python-action@develop
        with:
          github-token: ${{ secrets.github_token }}
          flag-name: test-python-${{ matrix.python-version }}
          parallel: true
  coveralls_finish:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - name: Coveralls Finished
        uses: AndreMiras/coveralls-python-action@develop
        with:
          github-token: ${{ secrets.github_token }}
          parallel-finished: true
  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
    steps:
      - uses: actions/checkout@v2
      - name: Deploy demo
        uses: akhileshns/heroku-deploy@v3.12.12
        with:
          heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
          heroku_app_name: ${{ secrets.HEROKU_APP_NAME }}
          heroku_email: ${{ secrets.HEROKU_EMAIL }}
