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
|
||||
types: [lua]
|
||||
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`
|
||||
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
|
||||
|
||||
### 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.
|
||||
|
||||
## Some Guidelines
|
||||
<br />
|
||||
|
||||
### Git Commit Messages
|
||||
|
||||
* 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
|
||||
## Code Conventions
|
||||
|
||||
All lua code is formatted with [Stylua](https://github.com/JohnnyMorganz/StyLua).
|
||||
* 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 .
|
||||
```
|
||||
|
||||
<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
|
||||
|
||||
|
|
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