diff --git a/.github/workflows/npmpublish.yaml b/.github/workflows/npmpublish.yaml index 8866241..a954d92 100644 --- a/.github/workflows/npmpublish.yaml +++ b/.github/workflows/npmpublish.yaml @@ -21,50 +21,90 @@ jobs: # cloned to etherpad-lite then moved to ../etherpad-lite. To avoid # conflicts with this plugin's clone, etherpad-lite must be cloned and # moved out before this plugin's repo is cloned to $GITHUB_WORKSPACE. - - uses: actions/checkout@v2 + - + uses: actions/checkout@v4 with: repository: ether/etherpad-lite path: etherpad-lite - - run: mv etherpad-lite .. + - + run: mv etherpad-lite .. # etherpad-lite has been moved outside of $GITHUB_WORKSPACE, so it is now # safe to clone this plugin's repo to $GITHUB_WORKSPACE. - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - + uses: actions/checkout@v4 + # This is necessary for actions/setup-node because '..' can't be used in + # cache-dependency-path. + - + name: Create ep_etherpad-lite symlink + run: | + mkdir -p node_modules + ln -s ../../etherpad-lite/src node_modules/ep_etherpad-lite + - + uses: actions/setup-node@v3 with: - node-version: 12 + node-version: 20 + cache: 'npm' + cache-dependency-path: | + node_modules/ep_etherpad-lite/package-lock.json + node_modules/ep_etherpad-lite/bin/doc/package-lock.json + package-lock.json + - run: npm install npm@6.14.18 -g + name: Install legacy npm for correct dependency resolution # All of ep_etherpad-lite's devDependencies are installed because the # plugin might do `require('ep_etherpad-lite/node_modules/${devDep}')`. # Eventually it would be nice to create an ESLint plugin that prohibits # Etherpad plugins from piggybacking off of ep_etherpad-lite's # devDependencies. If we had that, we could change this line to only # install production dependencies. - - run: cd ../etherpad-lite/src && npm ci - - run: npm ci + - + run: cd ../etherpad-lite/src && npm ci + - + run: npm ci # This runs some sanity checks and creates a symlink at # node_modules/ep_etherpad-lite that points to ../../etherpad-lite/src. # This step must be done after `npm ci` installs the plugin's dependencies # because npm "helpfully" cleans up such symlinks. :( Installing # ep_etherpad-lite in the plugin's node_modules prevents lint errors and # unit test failures if the plugin does `require('ep_etherpad-lite/foo')`. - - run: npm install --no-save ep_etherpad-lite@file:../etherpad-lite/src - - run: npm test - - run: npm run lint + - + run: npm install --no-save ep_etherpad-lite@file:../etherpad-lite/src + - + run: npm test + - + run: npm run lint publish-npm: if: github.event_name == 'push' needs: test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - + uses: actions/checkout@v4 with: - node-version: 12 + fetch-depth: 0 + - + uses: actions/setup-node@v3 + with: + node-version: 20 registry-url: https://registry.npmjs.org/ - - run: git config user.name 'github-actions[bot]' - - run: git config user.email '41898282+github-actions[bot]@users.noreply.github.com' - - run: npm ci - - run: npm version patch - - run: git push --follow-tags + cache: 'npm' + - run: npm install npm@6.14.18 -g + name: Install legacy npm for correct dependency resolution + - + name: Bump version (patch) + run: | + LATEST_TAG=$(git describe --tags --abbrev=0) || exit 1 + NEW_COMMITS=$(git rev-list --count "${LATEST_TAG}"..) || exit 1 + [ "${NEW_COMMITS}" -gt 0 ] || exit 0 + git config user.name 'github-actions[bot]' + git config user.email '41898282+github-actions[bot]@users.noreply.github.com' + npm ci + npm version patch + git push --follow-tags + # This is required if the package has a prepare script that uses something + # in dependencies or devDependencies. + - + run: npm ci # `npm publish` must come after `git push` otherwise there is a race # condition: If two PRs are merged back-to-back then master/main will be # updated with the commits from the second PR before the first PR's @@ -75,9 +115,12 @@ jobs: # already-used version number. By running `npm publish` after `git push`, # back-to-back merges will cause the first merge's workflow to fail but # the second's will succeed. - - run: npm publish + - + run: npm publish env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - -##ETHERPAD_NPM_V=2 -## NPM configuration automatically created using src/bin/plugins/updateAllPluginsScript.sh \ No newline at end of file + - + name: Add package to etherpad organization + run: npm access grant read-write etherpad:developers + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index aab20fc..d5b4f6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,26 +1,27 @@ { "name": "ep_custom_inline_toolbar", - "version": "1.0.3", + "version": "1.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ep_custom_inline_toolbar", - "version": "1.0.3", + "version": "1.0.4", "devDependencies": { - "eslint": "^8.51.0", - "eslint-config-etherpad": "^3.0.22", + "eslint": "8.51.0", + "eslint-config-etherpad": "3.0.22", + "eslint-plugin-cypress": "2.15.1", "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-mocha": "^10.2.0", + "eslint-plugin-mocha": "10.2.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prefer-arrow": "^1.2.2", - "eslint-plugin-promise": "^6.1.1" + "eslint-plugin-prefer-arrow": "^1.2.3", + "eslint-plugin-promise": "6.1.1" }, "engines": { - "node": ">16.0.0" + "lint": "eslint ." }, "peerDependencies": { - "ep_etherpad-lite": ">=1.8.14" + "ep_etherpad-lite": ">= 1.8.14" } }, "node_modules/@aashutoshrathi/word-wrap": { diff --git a/package.json b/package.json index c621ea9..f7b0b66 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "description": "Adds custom inline toolbar support to a Pad", "name": "ep_custom_inline_toolbar", - "version": "1.0.3", + "version": "1.0.4", "repository": { "type": "git", "url": "https://github.com/citizenos/ep_custom_inline_toolbar" @@ -10,26 +10,30 @@ "name": "John McLear", "email": "john@mclear.co.uk" }, - "engines": { - "node": ">16.0.0" - }, "devDependencies": { - "eslint": "^8.51.0", - "eslint-config-etherpad": "^3.0.22", - "eslint-plugin-mocha": "^10.2.0", - "eslint-plugin-node": "^11.1.0", + "eslint": "8.51.0", + "eslint-config-etherpad": "3.0.22", + "eslint-plugin-cypress": "2.15.1", "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-prefer-arrow": "^1.2.2", - "eslint-plugin-promise": "^6.1.1" + "eslint-plugin-mocha": "10.2.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prefer-arrow": "^1.2.3", + "eslint-plugin-promise": "6.1.1" }, "eslintConfig": { "root": true, "extends": "etherpad/plugin" }, - "peerDependencies": { - "ep_etherpad-lite": ">=1.8.14" + "engines": { + "lint": "eslint ." }, + "keywords": [ + "etherpad" + ], "scripts": { "lint": "eslint ." + }, + "peerDependencies": { + "ep_etherpad-lite": ">= 1.8.14" } }