Skip to content

Commit

Permalink
Merge branch 'main' into v6
Browse files Browse the repository at this point in the history
  • Loading branch information
JoshuaKGoldberg committed Nov 27, 2022
2 parents a4768f3 + fe67b1e commit e9aafbf
Show file tree
Hide file tree
Showing 62 changed files with 1,681 additions and 574 deletions.
10 changes: 10 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,16 @@ module.exports = {

// specifically for rules - default exports makes the tooling easier
'import/no-default-export': 'off',

'no-restricted-syntax': [
'error',
{
selector:
'ExportDefaultDeclaration Property[key.name="create"] MemberExpression[object.name="context"][property.name="options"]',
message:
"Retrieve options from create's second parameter so that defaultOptions are applied.",
},
],
},
},
// plugin rule tests
Expand Down
4 changes: 2 additions & 2 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
'globby',
// this dep now uses package.json exports - we will be removing it next major
'eslint-scope',
// this dep is now ESM only
'execa',
// the nx packages get updated using the nx migrate CLI
'@nrwl/cli',
'@nrwl/devkit',
'@nrwl/jest',
'@nrwl/nx-cloud',
'@nrwl/tao',
'@nrwl/workspace',
'nx',
],
ignorePaths: [
// integration test package.json's should never be updated as they're purposely fixed tests
Expand Down
85 changes: 85 additions & 0 deletions .github/workflows/nx-migrate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# This workflow is used to augment the capabilities of the renovate GitHub app by running a full
# `nx migrate` when renovate opens a PR to change the version of @nrwl/workspace.
#
# You will therefore also notice that in the renovate configuration, we ignore any packages which
# Nx will manage for us as part of `nx migrate` such as the remaining @nrwl/* packages and jest.

name: Nx Migrate

on:
pull_request:
branches: [main]
paths:
- 'package.json'

concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true

jobs:
maybe_nx_migrate:
# Only run if it was the renovate bot that triggered the workflow (otherwise we'll create a loop)
if: contains('["renovate[bot]"]', github.actor) == true
name: Run nx migrate if required
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
# To allow us to perform the git diff we need the git history
fetch-depth: 0
# To ensure we can push from a different user (and therefore cause actions to rerun)
persist-credentials: false

- name: Derive appropriate SHAs for base and head for `nx affected` commands
uses: nrwl/nx-set-shas@v3

- name: Check if @nrwl/workspace was changed as part of the latest commit on the PR
id: nrwl-workspace-package-check
run: |
git diff HEAD~1 -G"@nrwl/workspace" --exit-code package.json && echo "@nrwl/workspace unchanged" || echo "::set-output name=was-changed::true"
- name: Run nx migrate if @nrwl/workspace changed and commit the results
if: ${{ steps.nrwl-workspace-package-check.outputs.was-changed == 'true' }}
env:
# We cannot use secrets.GITHUB_TOKEN for this because it is not permitted to kick off subsequent actions worfklow runs, so we use a PAT instead
GITHUB_TOKEN: ${{ secrets.JAMES_HENRY_GITHUB_TOKEN }}
# We don't want to run any of our postinstall logic when Nx is invoking install behind the scenes
SKIP_POSTINSTALL: 'true'
run: |
# Checkout the PR branch using the github CLI
gh pr checkout ${{ github.event.pull_request.number }}
# Get the version of Nx we are migrating to
NX_VERSION=$(node -e "console.log(require('./package.json').devDependencies['@nrwl/workspace'])")
# Revert renovate's changes to package.json and yarn.lock so that it is a clean migrate from the status quo
git checkout HEAD~1 -- package.json yarn.lock
yarn --ignore-scripts
npx nx migrate @nrwl/workspace@$NX_VERSION
# Sometimes Nx can require config formatting changes after a migrate command
yarn --ignore-scripts
npx nx format
# migrations.json may or may not exist after running nx migrate
if [ -f migrations.json ]; then
# This will also invoke yarn automatically
npx nx migrate --run-migrations=migrations.json
# After we have run its migrations, we no longer need the migrations.json file
rm migrations.json
fi
# Ensure all the changed files are formatted appropriately
yarn format
# Commit all the changes to the PR (see note on not being able to use secrets.GITHUB_TOKEN for this)
git config --global user.email "james@henry.sc"
git config --global user.name "JamesHenry"
git remote set-url origin https://x-access-token:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git
git add --all
git commit -m "chore: run nx migrate for @nrwl/workspace v$NX_VERSION"
git push
52 changes: 52 additions & 0 deletions .github/workflows/semantic-pr-titles.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Semantic PR Titles

on:
pull_request_target:
types:
- opened
- edited
- synchronize

jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# keep this synchronized with the /CONTRIBUTING.md
types: |
docs
feat
fix
test
chore
# deps is used by renovate for its PRs
scopes: |
deps
ast-spec
eslint-plugin
eslint-plugin-internal
eslint-plugin-tslint
experimental-utils
parser
scope-manager
type-utils
types
typescript-estree
utils
visitor-keys
website
# we allow "cross package" PRs with no scope
requireScope: false
# ensure that the subject is lower-case first
# also allows "[rule-name] " prefix for eslint-plugin rule PRs
# https://regexr.com/733ed
subjectPattern: ^(\[[a-z\-]+\] )?[a-z].+[^\.]$
subjectPatternError: |
The "subject" must start with a lower-case letter and must not
end with a full-stop.
For PRs that add or change ESLint-plugin rules, you should begin
the title with "[rule-name] "
4 changes: 1 addition & 3 deletions .lintstagedrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
{
"*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}": [
"prettier --write"
]
"*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}": ["prettier --write"]
}
4 changes: 0 additions & 4 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ packages/eslint-plugin/src/configs/*.json
CONTRIBUTORS.md
packages/ast-spec/src/*/*/fixtures/_error_/*/fixture.ts

# prettier doesn't yet support satisfies
packages/ast-spec/src/expression/TSSatisfiesExpression/fixtures/
packages/scope-manager/tests/fixtures/type-assertion/satisfies.ts

# Ignore CHANGELOG.md files to avoid issues with automated release job
CHANGELOG.md

Expand Down
2 changes: 2 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ Within the body of your PR, make sure you reference the issue that you have work

Must be one of the following:

<!-- Keep this synchronized with /.github/workflows/semantic-pr-titles.yml -->

- `docs` - if you only change documentation, and not shipped code
- `feat` - for any new functionality additions
- `fix` - for any bug fixes that don't add new functionality
Expand Down
122 changes: 0 additions & 122 deletions docs/linting/CONFIGURATIONS.md

This file was deleted.

0 comments on commit e9aafbf

Please sign in to comment.