diff --git a/.github/workflows/ci-fix.yml b/.github/workflows/ci-fix.yml new file mode 100644 index 00000000000..34cfe2721e1 --- /dev/null +++ b/.github/workflows/ci-fix.yml @@ -0,0 +1,86 @@ +# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: CI + +on: + pull_request: + branches: [ master ] + +permissions: + contents: write # to fetch code (actions/checkout) + pull-requests: write + +jobs: + update-docs: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [16.x] + + steps: + - uses: actions/checkout@v2 + - name: Checkout PR + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh pr checkout ${{ github.event.pull_request.number }} + + - name: echo + run: | + set -x + echo "${{ toJson(github.event) }}" + echo ${{ github.event.pull_request.base.repo.full_name }} + echo $GITHUB_REPOSITORY + env + + - name: Fetch the master branch + run: git fetch origin HEAD:refs/remotes/origin/HEAD --depth 1 + - name: Fetch the master branch + run: git diff --name-only origin/HEAD --no-renames --diff-filter=ACMR + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: npm i + # run linter + - run: | + set -x; + git status; + git checkout HEAD -- package.json; + changes=$(git diff --name-only origin/HEAD --no-renames --diff-filter=ACMR); + if [ "$changes" == "" ]; then + echo "checking all files"; + node node_modules/eslint/bin/eslint --fix "lib/ace/**/*.js"; + else + jsChanges=$(echo "$changes" | grep -P '.js$' || :); + if [ "$jsChanges" == "" ]; then + echo "nothing to check"; + else + echo "checking $jsChanges"; + node node_modules/eslint/bin/eslint --fix $jsChanges; + fi + fi + # check types + - run: npm run update-types + - run: node_modules/.bin/tsc --noImplicitAny --strict --noUnusedLocals --noImplicitReturns --noUnusedParameters --noImplicitThis ace.d.ts + - run: npm run typecheck + # push automatic fixes to the pull request + - run: | + set -x; + git status; + git add -u + git reset -- build + git config user.name "Ace Ci Bot" + git config user.email "bot@c9.io" + git commit -m "ci fixes" --author="Ace Ci Bot " + git branch -f CI_FIXES + git remote -v + git log --all --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- | head -n 100 + + - name: Push changes + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ github.ref }} \ No newline at end of file diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 56a36d8505b..e4d6484a731 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -33,6 +33,7 @@ jobs: node-version: ${{ matrix.node-version }} - run: npm i - run: npm run cover + # run linter - run: | set -x; git status; @@ -50,7 +51,8 @@ jobs: node node_modules/eslint/bin/eslint $jsChanges; fi fi - # - run: npm run lint + # check types + - run: npm run update-types - run: node_modules/.bin/tsc --noImplicitAny --strict --noUnusedLocals --noImplicitReturns --noUnusedParameters --noImplicitThis ace.d.ts - run: npm run typecheck - uses: codecov/codecov-action@v3 diff --git a/package.json b/package.json index d50651fd8b9..8a1a040f01d 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "lint": "eslint \"src/**/*.js\"", "fix": "eslint --fix \"src/**/*.js\"", "typecheck": "tsc -p tsconfig.json", + "update-types": "node ./tool/modes-declaration-generator.js", "changelog": "standard-version", "prepack": "node tool/esm_resolver_generator.js && node Makefile.dryice.js css --target build-styles && rm -rf styles && mv build-styles/css styles" }, diff --git a/src/keyboard/hash_handler.js b/src/keyboard/hash_handler.js index d445f5f2924..07e9d61a250 100644 --- a/src/keyboard/hash_handler.js +++ b/src/keyboard/hash_handler.js @@ -297,4 +297,4 @@ MultiHashHandler.call = function(thisArg, config, platform) { }; exports.HashHandler = HashHandler; -exports.MultiHashHandler = MultiHashHandler; +exports.MultiHashHandler = MultiHashHandler