From a6f80df91d0a106b1e749a86eb843a127b9ec5f9 Mon Sep 17 00:00:00 2001 From: Alexandre Teoi Date: Fri, 12 Jan 2024 18:36:34 -0300 Subject: [PATCH] feat: replace commitlint with gitlint (#19) --- .commitlintrc.json | 26 ------ .github/workflows/ci.yml | 20 +++++ .github/workflows/commitlint.yml | 28 ------- .gitlint | 140 +++++++++++++++++++++++++++++++ Build-LuaJIT.ps1 | 1 + 5 files changed, 161 insertions(+), 54 deletions(-) delete mode 100644 .commitlintrc.json create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/commitlint.yml create mode 100644 .gitlint diff --git a/.commitlintrc.json b/.commitlintrc.json deleted file mode 100644 index f4c1de1..0000000 --- a/.commitlintrc.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "rules": { - "header-max-length": [ - 2, - "always", - 72 - ], - "type-enum": [ - 2, - "always", - [ - "docs", - "feat", - "fix", - "refactor", - "revert", - "style", - "test" - ] - ], - "type-empty": [ - 2, - "never" - ] - } -} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..142735d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,20 @@ +name: CI +on: [push, pull_request] +jobs: + gitlint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Install gitlint + run: pip install gitlint + - name: Get commit count + id: commit_count + run: echo "commit_count=$(git rev-list HEAD --count)" >>$GITHUB_OUTPUT + - name: Validate current commit (last commit) with gitlint + if: github.event_name == 'push' && steps.commit_count.outputs.commit_count > 1 + run: gitlint + - name: Validate PR commits with gitlint + if: github.event_name == 'pull_request' + run: gitlint --commits ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }},${{ github.event.pull_request.head.sha }} diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml deleted file mode 100644 index e95be4b..0000000 --- a/.github/workflows/commitlint.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: CI -on: [push, pull_request] -jobs: - commitlint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Install commitlint - run: | - npm install conventional-changelog-conventionalcommits - npm install commitlint@latest - - name: Print versions - run: | - git --version - node --version - npm --version - npx commitlint --version - - name: Get commit count - id: commit_count - run: echo "commit_count=$(git rev-list HEAD --count)" >>$GITHUB_OUTPUT - - name: Validate current commit (last commit) with commitlint - if: github.event_name == 'push' && steps.commit_count.outputs.commit_count > 1 - run: npx commitlint --from HEAD~1 --to HEAD --verbose - - name: Validate PR commits with commitlint - if: github.event_name == 'pull_request' - run: npx commitlint --from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} --to ${{ github.event.pull_request.head.sha }} --verbose diff --git a/.gitlint b/.gitlint new file mode 100644 index 0000000..6731cf4 --- /dev/null +++ b/.gitlint @@ -0,0 +1,140 @@ +# Edit this file as you like. +# +# All these sections are optional. Each section with the exception of [general] represents +# one rule and each key in it is an option for that specific rule. +# +# Rules and sections can be referenced by their full name or by id. For example +# section "[body-max-line-length]" could also be written as "[B1]". Full section names are +# used in here for clarity. +# +[general] +# Ignore certain rules, this example uses both full name and id +ignore=CC1, B6 + +# verbosity should be a value between 1 and 3, the commandline -v flags take precedence over this +# verbosity = 2 + +# By default gitlint will ignore merge, revert, fixup, fixup=amend, and squash commits. +# ignore-merge-commits=true +# ignore-revert-commits=true +# ignore-fixup-commits=true +# ignore-fixup-amend-commits=true +# ignore-squash-commits=true + +# Ignore any data sent to gitlint via stdin +# ignore-stdin=true + +# Fetch additional meta-data from the local repository when manually passing a +# commit message to gitlint via stdin or --commit-msg. Disabled by default. +# staged=true + +# Hard fail when the target commit range is empty. Note that gitlint will +# already fail by default on invalid commit ranges. This option is specifically +# to tell gitlint to fail on *valid but empty* commit ranges. +# Disabled by default. +# fail-without-commits=true + +# Whether to use Python `search` instead of `match` semantics in rules that use +# regexes. Context: https://github.com/jorisroovers/gitlint/issues/254 +# Disabled by default, but will be enabled by default in the future. +# regex-style-search=true + +# Enable debug mode (prints more output). Disabled by default. +# debug=true + +# Enable community contributed rules +# See http://jorisroovers.github.io/gitlint/contrib_rules for details +contrib=contrib-title-conventional-commits,CC1 + +# Set the extra-path where gitlint will search for user defined rules +# See http://jorisroovers.github.io/gitlint/user_defined_rules for details +# extra-path=examples/ + +# This is an example of how to configure the "title-max-length" rule and +# set the line-length it enforces to 50 +# [title-max-length] +# line-length=50 + +# Conversely, you can also enforce minimal length of a title with the +# "title-min-length" rule: +# [title-min-length] +# min-length=5 + +# [title-must-not-contain-word] +# Comma-separated list of words that should not occur in the title. Matching is case +# insensitive. It's fine if the keyword occurs as part of a larger word (so "WIPING" +# will not cause a violation, but "WIP: my title" will. +# words=wip + +# [title-match-regex] +# python-style regex that the commit-msg title must match +# Note that the regex can contradict with other rules if not used correctly +# (e.g. title-must-not-contain-word). +# regex=^US[0-9]* + +# [body-max-line-length] +# line-length=72 + +# [body-min-length] +# min-length=5 + +# [body-is-missing] +# Whether to ignore this rule on merge commits (which typically only have a title) +# default = True +# ignore-merge-commits=false + +# [body-changed-file-mention] +# List of files that need to be explicitly mentioned in the body when they are changed +# This is useful for when developers often erroneously edit certain files or git submodules. +# By specifying this rule, developers can only change the file when they explicitly reference +# it in the commit message. +# files=gitlint-core/gitlint/rules.py,README.md + +# [body-match-regex] +# python-style regex that the commit-msg body must match. +# E.g. body must end in My-Commit-Tag: foo +# regex=My-Commit-Tag: foo$ + +# [author-valid-email] +# python-style regex that the commit author email address must match. +# For example, use the following regex if you only want to allow email addresses from foo.com +# regex=[^@]+@foo.com + +# [ignore-by-title] +# Ignore certain rules for commits of which the title matches a regex +# E.g. Match commit titles that start with "Release" +# regex=^Release(.*) + +# Ignore certain rules, you can reference them by their id or by their full name +# Use 'all' to ignore all rules +# ignore=T1,body-min-length + +# [ignore-by-body] +# Ignore certain rules for commits of which the body has a line that matches a regex +# E.g. Match bodies that have a line that that contain "release" +# regex=(.*)release(.*) +# +# Ignore certain rules, you can reference them by their id or by their full name +# Use 'all' to ignore all rules +# ignore=T1,body-min-length + +# [ignore-body-lines] +# Ignore certain lines in a commit body that match a regex. +# E.g. Ignore all lines that start with 'Co-Authored-By' +# regex=^Co-Authored-By + +# [ignore-by-author-name] +# Ignore certain rules for commits of which the author name matches a regex +# E.g. Match commits made by dependabot +# regex=(.*)dependabot(.*) +# +# Ignore certain rules, you can reference them by their id or by their full name +# Use 'all' to ignore all rules +# ignore=T1,body-min-length + +# This is a contrib rule - a community contributed rule. These are disabled by default. +# You need to explicitly enable them one-by-one by adding them to the "contrib" option +# under [general] section above. +# [contrib-title-conventional-commits] +# Specify allowed commit types. For details see: https://www.conventionalcommits.org/ +# types = bugfix,user-story,epic diff --git a/Build-LuaJIT.ps1 b/Build-LuaJIT.ps1 index 55448d4..a55ee2e 100644 --- a/Build-LuaJIT.ps1 +++ b/Build-LuaJIT.ps1 @@ -1,5 +1,6 @@ $ErrorActionPreference = 'Stop' +# https://github.com/microsoft/vswhere/wiki/Start-Developer-Command-Prompt#using-powershell function Start-VsDevCmd { $installationPath = (