mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-20 10:35:08 +02:00
feat: add commitlint CI (#1459)
Co-authored-by: kylo252 <59826753+kylo252@users.noreply.github.com>
This commit is contained in:
parent
35d5615ecc
commit
346925fcdc
5 changed files with 123 additions and 14 deletions
34
.github/workflows/commitlint.config.js
vendored
Normal file
34
.github/workflows/commitlint.config.js
vendored
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
module.exports = {
|
||||||
|
rules: {
|
||||||
|
"body-leading-blank": [1, "always"],
|
||||||
|
"body-max-line-length": [2, "always", 100],
|
||||||
|
"footer-leading-blank": [1, "always"],
|
||||||
|
"footer-max-line-length": [2, "always", 100],
|
||||||
|
"header-max-length": [2, "always", 72],
|
||||||
|
"scope-case": [2, "always", "lower-case"],
|
||||||
|
"subject-case": [
|
||||||
|
2,
|
||||||
|
"never",
|
||||||
|
["upper-case", "pascal-case", "sentence-case", "start-case"],
|
||||||
|
],
|
||||||
|
"subject-empty": [2, "never"],
|
||||||
|
"subject-full-stop": [2, "never", "."],
|
||||||
|
"type-case": [2, "always", "lower-case"],
|
||||||
|
"type-empty": [2, "never"],
|
||||||
|
"type-enum": [
|
||||||
|
2,
|
||||||
|
"always",
|
||||||
|
[
|
||||||
|
"build",
|
||||||
|
"ci",
|
||||||
|
"docs",
|
||||||
|
"feat",
|
||||||
|
"fix",
|
||||||
|
"perf",
|
||||||
|
"refactor",
|
||||||
|
"revert",
|
||||||
|
"test",
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
15
.github/workflows/commitlint.yml
vendored
Normal file
15
.github/workflows/commitlint.yml
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
name: "Commit Linter"
|
||||||
|
on: pull_request
|
||||||
|
jobs:
|
||||||
|
lint-commits:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.3.1
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: wagoid/commitlint-github-action@v4
|
||||||
|
with:
|
||||||
|
configFile: .github/workflows/commitlint.config.js
|
||||||
|
helpURL: https://github.com/LunarVim/LunarVim/blob/rolling/CONTRIBUTING.md#commit-messages
|
|
@ -26,3 +26,9 @@ repos:
|
||||||
entry: luacheck
|
entry: luacheck
|
||||||
types: [lua]
|
types: [lua]
|
||||||
args: [.]
|
args: [.]
|
||||||
|
- id: commitlint
|
||||||
|
name: commitlint
|
||||||
|
language: system
|
||||||
|
entry: bash
|
||||||
|
args: [./utils/ci/run_commitlint.sh]
|
||||||
|
stages: [commit-msg]
|
||||||
|
|
|
@ -15,6 +15,8 @@ One of the best ways to begin contributing in a meaningful way is by helping fin
|
||||||
3. Link your fork with the repository `git remote add upstream https://github.com/lunarvim/LunarVim.git`
|
3. Link your fork with the repository `git remote add upstream https://github.com/lunarvim/LunarVim.git`
|
||||||
4. That's it ! You can now `git fetch upstream` and `git rebase [-i] upstream/rolling` to update your branches with the latest contributions.
|
4. That's it ! You can now `git fetch upstream` and `git rebase [-i] upstream/rolling` to update your branches with the latest contributions.
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
## Setting up development tools
|
## Setting up development tools
|
||||||
|
|
||||||
### For editing Lua files
|
### For editing Lua files
|
||||||
|
@ -31,21 +33,9 @@ One of the best ways to begin contributing in a meaningful way is by helping fin
|
||||||
|
|
||||||
Install [pre-commit](https://github.com/pre-commit/pre-commit) which will run all linters and formatters for you as a pre-commit-hook.
|
Install [pre-commit](https://github.com/pre-commit/pre-commit) which will run all linters and formatters for you as a pre-commit-hook.
|
||||||
|
|
||||||
## Some Guidelines
|
<br />
|
||||||
|
|
||||||
### Git Commit Messages
|
## Code Conventions
|
||||||
|
|
||||||
* Use the present tense ("Add feature" not "Added feature")
|
|
||||||
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
|
|
||||||
* Limit the first line to 72 characters or less
|
|
||||||
* Reference issues and pull requests liberally after the first line
|
|
||||||
|
|
||||||
### Git Branch Naming
|
|
||||||
|
|
||||||
* Name your branches meaningfully,
|
|
||||||
ex: (feature|bugfix|hotfix)/what-my-pr-does
|
|
||||||
|
|
||||||
### Code
|
|
||||||
|
|
||||||
All lua code is formatted with [Stylua](https://github.com/JohnnyMorganz/StyLua).
|
All lua code is formatted with [Stylua](https://github.com/JohnnyMorganz/StyLua).
|
||||||
* Use snake_case
|
* Use snake_case
|
||||||
|
@ -60,6 +50,60 @@ All shell code is formatted according to [Google Shell Style Guide](https://goog
|
||||||
shfmt -i 2 -ci -l -d .
|
shfmt -i 2 -ci -l -d .
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
## Pull Requests (PRs)
|
||||||
|
|
||||||
|
To avoid duplicate work, create a draft pull request.
|
||||||
|
|
||||||
|
### Commit Messages
|
||||||
|
* Commit header is limited to 72 characters.
|
||||||
|
* Commit body and footer is limited to 100 characters per line.
|
||||||
|
|
||||||
|
**Commit header format:**
|
||||||
|
```
|
||||||
|
<type>(<scope>?): <summary>
|
||||||
|
│ │ │
|
||||||
|
│ │ └─> Present tense. 'add something...'(O) vs 'added something...'(X)
|
||||||
|
│ │ Imperative mood. 'move cursor to...'(O) vs 'moves cursor to...'(X)
|
||||||
|
│ │ Not capitalized.
|
||||||
|
│ │ No period at the end.
|
||||||
|
│ │
|
||||||
|
│ └─> Commit Scope is optional, but strongly recommended.
|
||||||
|
│ Use lower case.
|
||||||
|
│ 'plugin', 'file', or 'directory' name is suggested, but not limited.
|
||||||
|
│
|
||||||
|
└─> Commit Type: build|ci|docs|feat|fix|perf|refactor|test
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Commit Type Guideline
|
||||||
|
|
||||||
|
* **build**: changes that affect the build system or external dependencies (example scopes: npm, pip, rg)
|
||||||
|
* **ci**: changes to CI configuration files and scripts (example scopes: format, lint, issue_templates)
|
||||||
|
* **docs**: changes to the documentation only
|
||||||
|
* **feat**: a new feature for the user
|
||||||
|
* **fix**: a bug fix
|
||||||
|
* **perf**: a performance improvement
|
||||||
|
* **refactor**: a code change that neither fixes a bug nor adds a feature
|
||||||
|
* **test**: Adding missing tests or correcting existing tests
|
||||||
|
|
||||||
|
**Real world examples:**
|
||||||
|
```
|
||||||
|
feat(quickfix): add 'q' binding to quit quickfix window when focused
|
||||||
|
```
|
||||||
|
```
|
||||||
|
fix(installer): add missing "HOME" variable
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Branch Naming
|
||||||
|
|
||||||
|
Name your branches meaningfully.
|
||||||
|
|
||||||
|
ex)
|
||||||
|
```(feature|bugfix|hotfix)/what-my-pr-does```
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
## Communication
|
## Communication
|
||||||
|
|
||||||
|
|
10
utils/ci/run_commitlint.sh
Normal file
10
utils/ci/run_commitlint.sh
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
REPO_DIR="$(git rev-parse --show-toplevel)"
|
||||||
|
HELP_URL="https://github.com/LunarVim/LunarVim/blob/rolling/CONTRIBUTING.md#commit-messages"
|
||||||
|
CONFIG="$REPO_DIR/.github/workflows/commitlint.config.js"
|
||||||
|
|
||||||
|
if ! npx commitlint --edit --verbose --help-url "$HELP_URL" --config "$CONFIG"; then
|
||||||
|
exit 1
|
||||||
|
fi
|
Loading…
Reference in a new issue