domjtalbot/nx-mesh

View on GitHub
.github/workflows/__lint.yml

Summary

Maintainability
Test Coverage
name: 'Lint'

on:
  workflow_call:
    inputs:
      affected:
        description: >
          Run for affected projects.
        required: false
        default: true
        type: boolean
      node_version:
        description: >
          Optionally define the version of Node to install.
        required: false
        default: 'lts/*'
        type: string
      save_cache:
        description: >
          Should the cache be saved upon completion?
        required: false
        default: false
        type: boolean
    outputs:
      isNxMeshAffected:
        description: >
          Is the nx-mesh lib affected?
        value: ${{ jobs.lint.outputs.isNxMeshAffected }}
      hasAffected:
        description: >
          Are there affected apps or libs?
        value: ${{ jobs.lint.outputs.hasAffected }}
      hasAffectedApps:
        description: >
          Are there affected apps?
        value: ${{ jobs.lint.outputs.hasAffectedApps }}
      hasAffectedLibs:
        description: >
          Are there affected libs?
        value: ${{ jobs.lint.outputs.hasAffectedLibs }}
    secrets:
      NX_CLOUD_ACCESS_TOKEN:
        description: 'The NX Cloud API token'
        required: true

concurrency:
  group: lint--${{ github.workflow }}--${{ github.ref }}

env:
  NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}

jobs:
  lint:
    name: Lint & Prettier
    runs-on: ubuntu-latest
    timeout-minutes: 10
    outputs:
      isNxMeshAffected: ${{ contains(steps.setup.outputs.affectedLibs, 'nx-mesh') }}
      hasAffected: ${{ steps.setup.outputs.hasAffected }}
      hasAffectedApps: ${{ steps.setup.outputs.hasAffectedApps }}
      hasAffectedLibs: ${{ steps.setup.outputs.hasAffectedLibs }}
    steps:
      - name: Check out repository
        uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
        with:
          fetch-depth: 0

      - name: Setup Job
        id: setup
        uses: ./.github/actions/setup-job
        with:
          node_version: ${{ inputs.node_version }}
          save_cache: '${{ inputs.save_cache }}'

      - name: Format
        run: |
          pnpm nx-cloud record -- npx nx format:check

      - name: Affected Lint
        if: inputs.affected == true
        run: |
          pnpm nx affected \
            --target=lint \
            --parallel=4

      - name: Lint
        if: inputs.affected != true
        run: |
          pnpm nx run-many \
            --target=lint \
            --parallel=4 \
            --all