summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/git-commit/README.md36
-rw-r--r--plugins/git-commit/git-commit.plugin.zsh23
2 files changed, 59 insertions, 0 deletions
diff --git a/plugins/git-commit/README.md b/plugins/git-commit/README.md
new file mode 100644
index 000000000..dc10d8ad5
--- /dev/null
+++ b/plugins/git-commit/README.md
@@ -0,0 +1,36 @@
+# git-commit plugin
+
+The git-commit plugin adds several [git aliases](https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-alias) for [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/#summary) messages.
+
+To use it, add `git-commit` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... git-commit)
+```
+
+## Syntax
+
+```zshrc
+git <type> [(-s, --scope) "<scope>"] "<message>"
+```
+
+> ⚠️ Single/Double quotes around the scope and message are required
+
+Where `type` is one of the following:
+
+- `build`
+- `chore`
+- `ci`
+- `docs`
+- `feat`
+- `fix`
+- `perf`
+- `refactor`
+- `revert`
+- `style`
+- `test`
+
+## Examples
+
+`git style "remove trailing whitespace"` -> `git commit -m "style: remove trailing whitespace"`
+`git fix -s "router" "correct redirect link"` -> `git commit -m "fix(router): correct redirect link"`
diff --git a/plugins/git-commit/git-commit.plugin.zsh b/plugins/git-commit/git-commit.plugin.zsh
new file mode 100644
index 000000000..70d541f21
--- /dev/null
+++ b/plugins/git-commit/git-commit.plugin.zsh
@@ -0,0 +1,23 @@
+_register() {
+ if ! git config --global --get-all alias.$1 &>/dev/null; then
+ git config --global alias.$1 '!a() { if [[ "$1" == "-s" || "$1" == "--scope" ]]; then git commit -m "'$1'(${2}): ${@:3}"; else git commit -m "'$1': ${@}"; fi }; a'
+ fi
+}
+
+aliases=(
+ 'build'
+ 'chore'
+ 'ci'
+ 'docs'
+ 'feat'
+ 'fix'
+ 'perf'
+ 'refactor'
+ 'revert'
+ 'style'
+ 'test'
+)
+
+for alias in "${aliases[@]}"; do
+ _register $alias
+done \ No newline at end of file