From 7f33584326f8dc5c50e74f32457d05aad8d2039f Mon Sep 17 00:00:00 2001 From: Michal Zielenkiewicz Date: Sat, 25 Nov 2023 11:39:32 +0100 Subject: [PATCH] Setup gitlint --- .github/workflows/ci-lint.yml | 14 ++++++++++++++ .gitlint | 24 ++++++++++++++++++++++++ internals/scripts/gitlint.js | 16 ++++++++++++++++ package.json | 2 +- 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 .gitlint create mode 100644 internals/scripts/gitlint.js diff --git a/.github/workflows/ci-lint.yml b/.github/workflows/ci-lint.yml index 7479410..ba04dbc 100644 --- a/.github/workflows/ci-lint.yml +++ b/.github/workflows/ci-lint.yml @@ -22,6 +22,12 @@ jobs: with: # Checkout pull request HEAD commit instead of merge commit. ref: ${{ github.event.pull_request.head.sha }} + # Fetch all history so gitlint can check the relevant commits. + fetch-depth: '0' + - name: Set up Python 3 + uses: actions/setup-python@v4 + with: + python-version: '3.x' - name: Set up Node.js 20 uses: actions/setup-node@v4 with: @@ -29,6 +35,14 @@ jobs: cache: yarn - name: Install dependencies run: yarn install --frozen-lockfile + - name: Install gitlint + run: | + python -m pip install gitlint + - name: Lint git commits + run: | + yarn lint-git + # Always run this step so that all linting errors can be seen at once. + if: always() - name: ESLint # Disallow warnings and always throw errors. run: yarn lint diff --git a/.gitlint b/.gitlint new file mode 100644 index 0000000..023a6ce --- /dev/null +++ b/.gitlint @@ -0,0 +1,24 @@ +# gitlint configuration. + +# For more information, see: +# https://jorisroovers.com/gitlint/configuration/. + +[general] +verbosity = 2 +ignore-merge-commits=true +ignore-fixup-commits=false +ignore-squash-commits=false +ignore=body-is-missing +contrib=contrib-disallow-cleanup-commits + +[title-max-length] +line-length=72 + +[body-max-line-length] +line-length=80 + +[body-min-length] +min-length=20 + +[title-must-not-contain-word] +words=wip diff --git a/internals/scripts/gitlint.js b/internals/scripts/gitlint.js new file mode 100644 index 0000000..9eb4725 --- /dev/null +++ b/internals/scripts/gitlint.js @@ -0,0 +1,16 @@ +// @ts-check +// https://github.com/oasisprotocol/oasis-core/blob/50d972df71fed2bcaa88e6ce5430d919ec08087d/common.mk#L171-L180 +const execSync = require('child_process').execSync + +const GIT_ORIGIN_REMOTE = 'origin' +const RELEASE_BRANCH = 'master' +const BRANCH = `${GIT_ORIGIN_REMOTE}/${RELEASE_BRANCH}` +const COMMIT_SHA = require('child_process').execSync(`git rev-parse ${BRANCH}`).toString().trim() + +console.log(`*** Running gitlint for commits from ${BRANCH} (${COMMIT_SHA})`) + +try { + execSync(`gitlint --commits ${BRANCH}..HEAD`, { stdio: 'inherit' }) +} catch (error) { + process.exit(1) +} diff --git a/package.json b/package.json index 59a64e9..f02d03e 100644 --- a/package.json +++ b/package.json @@ -2,12 +2,12 @@ "name": "dapp-wrose", "private": true, "version": "0.0.0", - "type": "module", "scripts": { "build": "tsc && vite build", "checkTs": "tsc --noEmit", "dev": "vite", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "lint-git": "node ./internals/scripts/gitlint.js", "prettify": "prettier src --write", "preview": "vite preview" },