diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index e5e6f18269bfb6..3047124a782f67 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -21,12 +21,11 @@ jobs: subsystem: tools label: tools run: | - cd tools NEW_VERSION=$(npm view eslint dist-tags.latest) - CURRENT_VERSION=$(node -p "require('./node_modules/eslint/package.json').version") + CURRENT_VERSION=$(node -p "require('./tools/node_modules/eslint/package.json').version") if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./update-eslint.sh + ./tools/dep_updaters/update-eslint.sh fi - id: corepack subsystem: deps diff --git a/tools/dep_updaters/update-eslint.sh b/tools/dep_updaters/update-eslint.sh new file mode 100755 index 00000000000000..7d536ef50212ab --- /dev/null +++ b/tools/dep_updaters/update-eslint.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +# Shell script to update ESLint in the source tree to the latest release. + +# This script must be in the tools directory when it runs because it uses the +# script source file path to determine directories to work in. + +set -ex + +cd "$( dirname "$0" )" || exit +rm -rf ../node_modules/eslint +( + rm -rf eslint-tmp + mkdir eslint-tmp + cd eslint-tmp || exit + + ROOT="$PWD/../../.." + [ -z "$NODE" ] && NODE="$ROOT/out/Release/node" + [ -x "$NODE" ] || NODE=$(command -v node) + NPM="$ROOT/deps/npm/bin/npm-cli.js" + + "$NODE" "$NPM" init --yes + + "$NODE" "$NPM" install \ + --ignore-scripts \ + --install-strategy=shallow \ + --no-bin-links \ + eslint + # Uninstall plugins that we want to install so that they are removed from + # devDependencies. Otherwise --omit=dev will cause them to be skipped. + ( + cd node_modules/eslint + "$NODE" "$NPM" uninstall \ + --install-links=false \ + --ignore-scripts \ + eslint-plugin-jsdoc \ + eslint-plugin-markdown \ + @babel/core \ + @babel/eslint-parser \ + @babel/plugin-syntax-import-assertions + ) + ( + cd node_modules/eslint + "$NODE" "$NPM" install \ + --ignore-scripts \ + --install-links=false \ + --no-bin-links \ + --no-save \ + --omit=dev \ + --omit=peer \ + eslint-plugin-jsdoc \ + eslint-plugin-markdown \ + @babel/core \ + @babel/eslint-parser \ + @babel/plugin-syntax-import-assertions + ) + # Use dmn to remove some unneeded files. + "$NODE" "$NPM" exec --package=dmn@2.2.2 --yes -- dmn -f clean + # TODO: Get this into dmn. + find node_modules -name .package-lock.json -exec rm {} \; + find node_modules -name 'README*' -exec rm {} \; +) + +mv eslint-tmp/node_modules/eslint ../node_modules/eslint +rm -rf eslint-tmp/ diff --git a/tools/update-eslint.sh b/tools/update-eslint.sh deleted file mode 100755 index 579b63921e1fd5..00000000000000 --- a/tools/update-eslint.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -# Shell script to update ESLint in the source tree to the latest release. - -# This script must be in the tools directory when it runs because it uses the -# script source file path to determine directories to work in. - -set -ex - -cd "$( dirname "$0" )" || exit -rm -rf node_modules/eslint -( - rm -rf eslint-tmp - mkdir eslint-tmp - cd eslint-tmp || exit - - ROOT="$PWD/../.." - [ -z "$NODE" ] && NODE="$ROOT/out/Release/node" - [ -x "$NODE" ] || NODE=$(command -v node) - NPM="$ROOT/deps/npm/bin/npm-cli.js" - - "$NODE" "$NPM" init --yes - - "$NODE" "$NPM" install --global-style --no-bin-links --ignore-scripts eslint - # Uninstall plugins that we want to install so that they are removed from devDependencies. - # Otherwise --production will cause them to be skipped. - (cd node_modules/eslint && "$NODE" "$NPM" uninstall --ignore-scripts eslint-plugin-jsdoc eslint-plugin-markdown @babel/core @babel/eslint-parser @babel/plugin-syntax-import-assertions) - (cd node_modules/eslint && "$NODE" "$NPM" install --no-save --no-bin-links --ignore-scripts --production --omit=peer eslint-plugin-jsdoc eslint-plugin-markdown @babel/core @babel/eslint-parser @babel/plugin-syntax-import-assertions) - # Use dmn to remove some unneeded files. - "$NODE" "$NPM" exec -- dmn@2.2.2 -f clean - # TODO: Get this into dmn. - find node_modules -name .package-lock.json -exec rm {} \; - find node_modules -name 'README*' -exec rm {} \; -) - -mv eslint-tmp/node_modules/eslint node_modules/eslint -rm -rf eslint-tmp/