name: Lint
on: pull_request

jobs:
  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

  php-linters:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php-versions: [7.2, 7.3, 7.4]
    name: php${{ matrix.php-versions }} lint
    steps:
    - name: Checkout
      uses: actions/checkout@master
    - name: Set up php${{ matrix.php-versions }}
      uses: shivammathur/setup-php@master
      with:
        php-version: ${{ matrix.php-versions }}
        tools: composer:v1
        coverage: none
    - name: Lint
      run: composer run lint

  php-cs-fixer:
    name: php-cs check
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@master
    - name: Set up php
      uses: shivammathur/setup-php@master
      with:
        php-version: 7.4
        tools: composer:v1
        coverage: none
    - name: Install dependencies
      run: composer i
    - name: Run coding standards check
      run: composer run cs:check

  app-code-check:
    runs-on: ubuntu-latest
    strategy:
        matrix:
            nextcloud-versions: ['master']
    name: Nextcloud ${{ matrix.nextcloud-versions }} app code check
    steps:
        - name: Set up php7.4
          uses: shivammathur/setup-php@master
          with:
              php-version: 7.4
              tools: composer:v1
              extension-csv: ctype,curl,dom,gd,iconv,intl,json,mbstring,openssl,posix,sqlite,xml,zip
              coverage: xdebug
        - name: Checkout Nextcloud
          run: git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b ${{ matrix.nextcloud-versions }} nextcloud
        - name: Run tests
          run: php -f nextcloud/occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database sqlite --database-pass=''
        - name: Checkout
          uses: actions/checkout@master
          with:
              path: nextcloud/apps/mail
        - name: Run tests
          run: php -f nextcloud/occ app:check-code mail

  node-linters:
    runs-on: ubuntu-latest
    name: ESLint
    steps:
    - uses: actions/checkout@master
    - name: Set up Node
      uses: actions/setup-node@v1
      with:
        node-version: 12.x
    - name: npm install
      run: npm ci
    - name: eslint
      run: npm run lint
    env:
      CI: true
