name: Native Component List app

on:
  workflow_dispatch: {}
  pull_request:
    paths:
      - .github/workflows/native-component-list.yml
      - apps/native-component-list/**
      - packages/**
      - yarn.lock
      - '!packages/@expo/cli/**'
  push:
    branches: [main]
    paths:
      - .github/workflows/native-component-list.yml
      - apps/native-component-list/**
      - packages/**
      - yarn.lock
      - '!packages/@expo/cli/**'

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
      - name: 👀 Checkout
        uses: actions/checkout@v3
        with:
          submodules: true
      - name: ⬢ Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 16
      - name: ♻️ Restore caches
        uses: ./.github/actions/expo-caches
        id: expo-caches
        with:
          yarn-workspace: 'true'
          yarn-tools: 'true'
      - name: 🧶 Install workspace node modules
        if: steps.expo-caches.outputs.yarn-workspace-hit != 'true'
        run: yarn install --frozen-lockfile
      - name: 🛠 Compile NCL sources
        run: yarn tsc
        working-directory: apps/native-component-list
      - name: 🚨 Lint NCL app
        run: yarn lint --max-warnings 0
        working-directory: apps/native-component-list
      - name: 🔔 Notify on Slack
        uses: 8398a7/action-slack@v3
        if: failure() && (github.event.ref == 'refs/heads/main')
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SLACK_WEBHOOK_URL: ${{ secrets.slack_webhook_api }}
        with:
          channel: '#expo-sdk'
          status: ${{ job.status }}
          fields: job,message,ref,eventName,author,took
          author_name: Build Native Component List
