summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOscar Lee-Vermeren <oscar.leevermeren@gmail.com>2023-09-04 13:21:27 -0400
committerGitHub <noreply@github.com>2023-09-04 19:21:27 +0200
commit1abc1d998a71efd50af30210e26bee462496e442 (patch)
treea40a7fa0f66a32ab7c373c0d7531b7c5bd94239b
parentf694d5ecc9aa45f4c394d2e15bf2bfde96eeeda6 (diff)
downloadzsh-1abc1d998a71efd50af30210e26bee462496e442.tar.gz
zsh-1abc1d998a71efd50af30210e26bee462496e442.tar.bz2
zsh-1abc1d998a71efd50af30210e26bee462496e442.zip
feat(git-commit): create plugin (#9646)
Co-authored-by: K. Akatsuki <thevortexspirit@gmail.com>
-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