go-gitmoji-cli
![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)
![CodeQL](https://github.com/AndreasAugustin/go-gitmoji-cli/actions/workflows/github-code-scanning/codeql/badge.svg)
![ci_go](https://github.com/AndreasAugustin/go-gitmoji-cli/actions/workflows/ci_go.yml/badge.svg)
![Lint](https://github.com/AndreasAugustin/go-gitmoji-cli/actions/workflows/lint.yml/badge.svg)
![goreleaser](https://github.com/AndreasAugustin/go-gitmoji-cli/actions/workflows/release_go.yml/badge.svg)
____ ____ ____ _ ___ _ _ ____ _ _ ____ _ _
| __ | | __ | __ | | |\/| | | | | __ | | |
|__] |__| |__] | | | | |__| _| | |___ |___ |
![commit](https://github.com/AndreasAugustin/go-gitmoji-cli/raw/v0.5.1-alpha/docs/assets/commit.gif)
Abstract
Gitmoji is an emoji guide for GitHub commit messages. Aims to be a standardization cheatsheet - guide for using emojis on GitHub's commit messages.
is a nice way to standardize commit messages with emojis.
There is already a nice gitmoji-cli command line interface available.
Nevertheless, I was searching a nice project to get a bit more into golang so this cli was born.
There are some feature differences between both projects.
Per default the format is conventional-commits with emoji
<type>[optional scope]: :smile: <description>
Installation
⚠ Currently the package is in state alpha
please be aware that some functionality may change and some bugs may happen.
brew
brew tap AndreasAugustin/go-gitmoji-cli https://github.com/AndreasAugustin/go-gitmoji-cli
brew install AndreasAugustin/go-gitmoji-cli/go-gitmoji-cli
Remark ⚠
When you receive an error like This repository is configured for Git LFS but 'git-lfs' was not found on your path
you most likely have git-lfs
installed globally. Do the following
git lfs uninstall
# <cd to the repo, which uses lfs>
git lfs install --local
github issue
Aur
The package is located here
pamac update -a
pamac install go-gitmoji-cli-bin
Docker
The image is available within 2 docker registries available. Just pull the image to have a local test setup available.
To use it, mount the current dir into the working dir.
# available <tag> are the git tags
# docker hub
# pull the image
docker pull andyaugustin/go-gitmoji-cli:<tag>
# run the container -> will open a zsh session
# note: the local volume mount is missing in the sample command
docker run -it andyaugustin/go-gitmoji-cli:<tag>
# if you prefer ghcr instead of docker hub
# docker pull ghcr.io/andreasaugustin/go-gitmoji-cli:<tag>
# docker run -it ghcr.io/andreasaugustin/go-gitmoji-cli:<tag>
Go
go install github.com/AndreasAugustin/go-gitmoji-cli@latest
Manual
Download the related release here and unpack the related binary into your path
Configuration
It is possible to configure the cli either with a .go-gitmoji-cli.json
file within the repo directory
or with command line flags.
Environment variables are supported (case insensitive). The key is the same like the parameter with a prefix GO_GITMOJI_CLI_.
All parameters are able to be modified with flags.
parameter |
description |
default |
auto_add |
perform automatically a git add . |
false |
auto_sign |
automatically sign commits (can also be configured with git git config -g commit.gpgsign=true |
false |
emoji_format |
format of emojis code/emoji |
code |
scope_prompt |
Prompt for adding the commit scope |
false |
body_prompt |
Prompt for adding the commit message body |
false |
capitalize_title |
If set to true the commit title description will be capitalized |
false |
gitmojis_url |
The URL of the gitmojis database |
https://gitmoji.dev/api/gitmojis |
use_default_git_messages |
Use the default git messages (merge, squash, ammend,..) |
true |
debug |
enable debug mode |
false |
The configuration values can be changed with
go-gitmoji-cli config [-g]
![config](https://github.com/AndreasAugustin/go-gitmoji-cli/raw/v0.5.1-alpha/docs/assets/config.gif)
This will create a file within the local directory or within the OS related config directory (when -g
flag is enabled).
Reading will follow the following order:
- default values
- global config if exists
- local config if exists
- environment variables
- command flags
Usage
Proxy
The cli is firing at first usage or with the update gitmojis
command a http query to the
configured gitmoji api url to receive a list of available gitmojis.
The cli is using net/http package which is per default respecting the standard system proxy settings done
with environment variables.
- HTTP_PROXY
- HTTPS_PROXY
- NO_PROXY
basic commands
# show available commands
go-gitmoji-cli --help
![help](https://github.com/AndreasAugustin/go-gitmoji-cli/raw/v0.5.1-alpha/docs/assets/help.gif)
# show the version
go-gitmoji-cli --version
![version](https://github.com/AndreasAugustin/go-gitmoji-cli/raw/v0.5.1-alpha/docs/assets/version.gif)
# list the available gitmojis
go-gitmoji-cli list gitmojis
![list](https://github.com/AndreasAugustin/go-gitmoji-cli/raw/v0.5.1-alpha/docs/assets/list_gitmojis.gif)
# list the available commit types
go-gitmoji-cli list commit-types
![list](https://github.com/AndreasAugustin/go-gitmoji-cli/raw/v0.5.1-alpha/docs/assets/list_commit_types.gif)
Commit
There are 2 ways making commits with the tool
- hooks
go-gitmoji-cli hooks --help
. With that command it is possible to install a commit hook. To use the hook, just do a git commit <options>
.
This will trigger the cli.
- commit
go-gitmoji-cli commit --help
. It is not possible to use this command when you have installed a hook.
# doing a commit with dry-run
go-gitmoji-cli commit --dry-run
![commit-dry-run](https://github.com/AndreasAugustin/go-gitmoji-cli/raw/v0.5.1-alpha/docs/assets/commit.gif)
Some arguments and flags you know from git will be reused.
The first message will be parsed and the single parts will be reused.
E.g. git commit -S -m "feat(api)!: :smile: also just parts of the message will be reused" -m "this is a message body"
This is also true when the go-gitmoji-cli commit -S -m "..." -m "..."
is used.
Debugging
There is a flag --debug
enabling verbose logging
DEV
The development environment targets are located in the Makefile
make help
Deployments
A push/merge to main
branch is triggering the deployment. The release action can be found here
Special thanks to gitmoji and gitmoji-cli
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!