name: Lint on: push: merge_group: pull_request: types: - opened - synchronize - ready_for_review workflow_dispatch: permissions: contents: write jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v2 # uses version from "packageManager" field in package.json - name: Setup Node.js uses: actions/setup-node@v4 with: cache: pnpm node-version-file: '.node-version' - name: Install Packages run: | pnpm install --frozen-lockfile env: CYPRESS_CACHE_FOLDER: .cache/Cypress - name: Run Linting shell: bash run: | if ! pnpm run lint; then # print a nice error message on lint failure ERROR_MESSAGE='Running `pnpm run lint` failed.' ERROR_MESSAGE+=' Running `pnpm -w run lint:fix` may fix this issue. ' ERROR_MESSAGE+=" If this error doesn't occur on your local machine," ERROR_MESSAGE+=' make sure your packages are up-to-date by running `pnpm install`.' ERROR_MESSAGE+=' You may also need to delete your prettier cache by running' ERROR_MESSAGE+=' `rm ./node_modules/.cache/prettier/.prettier-cache`.' echo "::error title=Lint failure::${ERROR_MESSAGE}" # make sure to return an error exitcode so that GitHub actions shows a red-cross exit 1 fi - name: Verify `./src/config.type.ts` is in sync with `./src/schemas/config.schema.yaml` shell: bash run: | if ! pnpm run --filter mermaid types:verify-config; then ERROR_MESSAGE='Running `pnpm run --filter mermaid types:verify-config` failed.' ERROR_MESSAGE+=' This should be fixed by running' ERROR_MESSAGE+=' `pnpm run --filter mermaid types:build-config`' ERROR_MESSAGE+=' on your local machine.' echo "::error title=Lint failure::${ERROR_MESSAGE}" # make sure to return an error exitcode so that GitHub actions shows a red-cross exit 1 fi - name: Verify no circular dependencies working-directory: ./packages/mermaid shell: bash run: | if ! pnpm run --filter mermaid checkCircle; then ERROR_MESSAGE='Circular dependency detected.' ERROR_MESSAGE+=' This should be fixed by removing the circular dependency.' ERROR_MESSAGE+=' Run `pnpm run --filter mermaid checkCircle` on your local machine' ERROR_MESSAGE+=' to see the circular dependency.' echo "::error title=Lint failure::${ERROR_MESSAGE}" # make sure to return an error exitcode so that GitHub actions shows a red-cross exit 1 fi - name: Verify Docs id: verifyDocs working-directory: ./packages/mermaid continue-on-error: ${{ github.event_name == 'push' }} run: pnpm run docs:verify - name: Rebuild Docs if: ${{ steps.verifyDocs.outcome == 'failure' && github.event_name == 'push' }} working-directory: ./packages/mermaid run: pnpm run docs:build - name: Commit changes uses: EndBug/add-and-commit@v9 if: ${{ steps.verifyDocs.outcome == 'failure' && github.event_name == 'push' }} with: message: 'Update docs' add: 'docs/*'