name: Lint

on:
  pull_request:
  push:
    branches:
      - master
      - stable*

jobs:
  php:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-versions: ["7.3", "7.4", "8.0"]

    name: php${{ matrix.php-versions }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Set up php ${{ matrix.php-versions }}
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          coverage: none

      - name: Lint
        run: composer run lint

  php-cs-fixer:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-versions: ["7.4"]

    name: cs php${{ matrix.php-versions }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Set up php
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          coverage: none

      - name: Install dependencies
        run: composer i

      - name: Run coding standards check
        run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )

  node:
    runs-on: ubuntu-latest

    name: eslint node
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Set up node
        uses: actions/setup-node@v2
        with:
          node-version: 14

      - name: Set up npm7
        run: npm i -g npm@7

      - name: Install dependencies
        run: npm ci

      - name: Lint
        run: npm run lint

  stylelint:
    runs-on: ubuntu-latest

    name: stylelint node
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Set up node
        uses: actions/setup-node@v2
        with:
          node-version: 14

      - name: Set up npm7
        run: npm i -g npm@7

      - name: Install dependencies
        run: npm ci

      - name: Lint
        run: npm run stylelint

  xml-linters:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master
      - name: Download schema
        run: wget https://apps.nextcloud.com/schema/apps/info.xsd
      - name: Lint info.xml
        uses: ChristophWurst/xmllint-action@v1
        with:
          xml-file: ./appinfo/info.xml
          xml-schema-file: ./info.xsd
