name: Lint

on:
  push:
    branches:
    - master
    - develop
  pull_request:

jobs:

    solidity:
      runs-on: ubuntu-latest

      steps:
      - name: Check out github repository
        uses: actions/checkout@v2
        with:
          fetch-depth: 1

      - name: Setup node.js
        uses: actions/setup-node@v1
        with:
          node-version: '12.x'

      - name: Set yarn cache directory path
        id: yarn-cache-dir-path
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - name: Restore yarn cache
        uses: actions/cache@v2
        id: yarn-cache
        with:
          path: |
            ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
            ${{ runner.os }}-yarn-

      - name: Install node.js dependencies
        run: yarn --frozen-lockfile

      - name: Run linter on *.sol and *.json
        run: yarn lint:check

    commits:
      runs-on: ubuntu-latest

      steps:
      - name: Check out github repository
        uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: Run commitlint
        uses: wagoid/commitlint-github-action@v2

    brownie:
      runs-on: ubuntu-latest

      steps:
      - name: Check out github repository
        uses: actions/checkout@v2
        with:
          fetch-depth: 1

      - name: Set up python 3.8
        uses: actions/setup-python@v2
        with:
          python-version: 3.8

      - name: Set pip cache directory path
        id: pip-cache-dir-path
        run: |
            echo "::set-output name=dir::$(pip cache dir)"

      - name: Restore pip cache
        uses: actions/cache@v2
        id: pip-cache
        with:
          path: |
            ${{ steps.pip-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements-dev.txt') }}
          restore-keys: |
            ${{ runner.os }}-pip-${{ hashFiles('**/requirements-dev.txt') }}
            ${{ runner.os }}-pip-

      - name: Install python dependencies
        run: pip install -r requirements-dev.txt

      - name: Run black
        run: black --check --include "(tests|scripts)" .

# TODO: Add Slither Static Analyzer
