name: Invidious CI

on:
  push:
    branches:
      - "master"
      - "api-only"
  pull_request:
    branches: "*"

jobs:
  build:
    
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v2
      
      - name: Install Crystal
        uses: oprypin/install-crystal@v1.2.4
      
      - name: Cache Shards
        uses: actions/cache@v2
        with:
          path: ./lib
          key: shards-${{ hashFiles('shard.lock') }}
      
      - name: Install Shards
        run: |
          if ! shards check; then
            shards install
          fi
      
      - name: Run tests
        run: crystal spec
      
      - name: Run lint
        run: |
          if ! crystal tool format --check; then
            crystal tool format
            git diff
            exit 1
          fi
      
      - name: Build
        run: crystal build --warnings all --error-on-warnings --error-trace src/invidious.cr
      
  build-docker:
    
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v2
      
      - name: Build Docker
        run: docker-compose up -d
      
      - name: Test Docker
        run: while curl -Isf http://localhost:3000; do sleep 1; done