cloud evangelist
- ๐จโ๐ป All of my public projects are available at https://github.com/AndreasAugustin
:octocat: A conventional gitmoji commit interactive command line tool for using emojis on conventional commits. :rocket:
Home Page: https://gitmoji.dev/
License: MIT License
cloud evangelist
Currently you are able to configure the cli with a config file or environment variables.
normally one would expect to be able to configure the cli also with cli flags.
A map betweeen the cli options and configuration options would be nice to have.
sometimes one like to use configuration options with cli flags, e.g. within CI tasks or when you want to try something out or you have an exceptional case.
use the viper pflag mapping https://gist.github.com/brianclements/841ea7bffdb01346392c
when using the hook, the commit title has "
around the message.
Super bad for tools like release-please
no quotes around the title
when using the hook the message title has "
around the title
mkdir tmp
cd tmp
git init
echo "foo" >> README.md
go-gitmoji-cli hooks init
git commit
# now do the commit with the message
No response
No response
v0.5.0-alpha (724a1cd)
In some scenarios one like to close the current session. Normally ctrl + C
is doing such a thing in most tty.
But the current implementation will lead in most cases to next prompt
ctrl + C
should terminate the go-gitmoji-cli session
in most cases the next prompt will be opened.
ctrl + C
check the keymap within the UI elements
No response
v0.1.0-pre-alpha
Currently the gitmoji and type list prompts are provided all the time.
users are able to provide the information with -m
flag.
proposed solution is to not show the prompts when the needed information is already provided within the -m
flag if valid.
sometimes people already provide the information with the -m
flag, e.g. (with hook) git commit -m "feat: :smile: (#56) my nice description"
.
currently the gitmoji and commit prompts are shown which is not necessary.
if valid information is provided, use the information (already parsed and available within code) if it is valid.
โ go-gitmoji-cli [chore/docker_test] โก git commit -S
____ ____ ____ _ ___ _ _ ____ _ _ ____ _ _
| __ | | __ | __ | | |\/| | | | | __ | | |
|__] |__| |__] | | | | |__| _| | |___ |___ |
info: hooks called
info: run: [.git/COMMIT_EDITMSG merge]
info: hook commit message file .git/COMMIT_EDITMSG
fatal: issue reading and parsing the commit msg file the amount of messages is to low or to high
should not have an error
does have an error
No response
there is a check about the amount of messages provided available within the code.
This check needs to be adjusted.
No response
v0.2.8-alpha
Remark
Also need to check the hook commit message second message https://git-scm.com/docs/githooks
prepare-commit-msg
This hook is invoked by [git-commit[1]](https://git-scm.com/docs/git-commit) right after preparing the default log message, and before the editor is started.
It takes one to three parameters. The first is the name of the file that contains the commit log message. The second is the source of the commit message, and can be: message (if a -m or -F option was given); template (if a -t option was given or the configuration option commit.template is set); merge (if the commit is a merge or a .git/MERGE_MSG file exists); squash (if a .git/SQUASH_MSG file exists); or commit, followed by a commit object name (if a -c, -C or --amend option was given).
If the exit status is non-zero, git commit will abort.
The purpose of the hook is to edit the message file in place, and it is not suppressed by the --no-verify option. A non-zero exit means a failure of the hook and aborts the commit. It should not be used as replacement for pre-commit hook.
The sample prepare-commit-msg hook that comes with Git removes the help message found in the commented portion of the commit template.
There is one query done to the gitmoji api.
Would be nice to be able to use a proxy.
When people are behind a corp firewall it might be needed to use a proxy
add possibility to use a proxy from env variables.
https://pkg.go.dev/net/http#ProxyFromEnvironment
Currently the generated completion contains invalid characters
โ ~ go-gitmoji-cli completion zsh
____ ____ ____ _ ___ _ _ ____ _ _ ____ _ _
| __ | | __ | __ | | |\/| | | | | __ | | |
|__] |__| |__] | | | | |__| _| | |___ |___ |
#compdef go-gitmoji-cli
compdef _go-gitmoji-cli go-gitmoji-cli
# zsh completion for go-gitmoji-cli -*- shell-script -*-
__go-gitmoji-cli_debug()
{
local file="$BASH_COMP_DEBUG_FILE"
The figlet is breaking the functionality
completions must work
The generated completion does not work
โ ~ go-gitmoji-cli completion zsh > /tmp/completion
โ ~ source /tmp/completion
/tmp/completion:1: bad pattern: ^[[35m____
Currently the figlet is created within the root init() function.
Somehow when caling go-gitmoji-cli completion zsh
the figlet must not be called
No response
v0.1.0-alpha
Currently docker images are released and push to registries.
Those images should be tested after the release
Check if the newly created images are valid
like in https://github.com/AndreasAugustin/actions-template-sync/blob/main/.github/workflows/push_docker.yml
us container structured tests
-
name: run tests
run: |
echo "Install container tools"
curl -LO https://storage.googleapis.com/container-structure-test/latest/container-structure-test-linux-amd64 \
&& chmod +x container-structure-test-linux-amd64 \
&& sudo mv container-structure-test-linux-amd64 /usr/local/bin/container-structure-test
echo "Run tests"
container-structure-test test \
--image ghcr.io/andreasaugustin/${{ matrix.variant }}:${{ steps.meta.outputs.version }} \
--config src/test-config.yaml
when using the hook with a commit it reports an error
tmp [main] โก git commit -S -m "fix: :bug: (#39) fix issue with subcommand no auto help"
____ ____ ____ _ ___ _ _ ____ _ _ ____ _ _
| __ | | __ | __ | | |\/| | | | | __ | | |
|__] |__| |__] | | | | |__| _| | |___ |___ |
fatal: issue reading and parsing the commit msg file open .git/COMMIT_EDITMSG message: no such file or directory
โ tmp [main] โก
no error using the hooks
currently an error is reported no file found (but rile is existent in .git
repository)
No response
No response
No response
v0.2.7-alpha
currently releases must be done manually. Would be nice to have an automated way.
each push to main branch should create a PR for doing a release.
use releaseplease github action https://github.com/google-github-actions/release-please-action
similar to #6 apk, deb and rpm packages should be supported
some linux distros need other package formats
use the nfpm option within goreleaser
https://nfpm.goreleaser.com/configuration/
man pages is a unified linux way of documenting.
this cli should also support that option
possible to be done with https://umarcor.github.io/cobra/
The current built and released docker images do not contain the go-gitmoji-cli
binary.
when running the images they must contain the binary
Checking the build phase and the Dockerfile, the copy step has been forgotten
put the copy step into the workflow
No response
v0.1.0-pre-alpha
currently within the docs there are several spelling and grammatical issues.
Those need to be corrected.
The whole documentation needs a rework (including the gifs)
https://github.com/AndreasAugustin/go-gitmoji-cli
Some subcommands have subcommands.
Currently when calling the parent subcommand one would expect to get the help with a list of available subcommands.
But you get nothing.
Example:
โ ~ go-gitmoji-cli list -d
INFO[0000] Debug logs enabled
DEBU[0000] list called
โ ~
you should get the help command for the subcommand.
you get nothing
โ ~ go-gitmoji-cli list -d
INFO[0000] Debug logs enabled
DEBU[0000] list called
โ ~
Remove the empty run cmd within the related subcommands
var ListCmd = &cobra.Command{
Use: "list",
Short: "List all the available gitmojis",
Long: fmt.Sprintf(`The list is queried from the api %s.`, pkg.DefaultGitmojiApiUrl),
Run: func(cmd *cobra.Command, args []string) {
log.Debug("list called")
},
}
No response
v0.2.6-alpha
Currently the noted brew install command is not working with error
linuxbrew@c2d96618793d:~$ brew install https://github.com/AndreasAugustin/go-gitmoji-cli/Formula
Running `brew update --auto-update`...
==> Homebrew collects anonymous analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics
No analytics have been recorded yet (nor will be during this `brew` run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
Error: Non-checksummed download of Formula formula file from an arbitrary URL is unsupported! `brew extract` or `brew create` and `brew tap-new` to create a formula file in a tap on GitHub instead.
brew install should work
installation does not work
$ docker pull homebrew/brew`
$ docker run -it homebrew/brew:latest
$ brew install https://github.com/AndreasAugustin/go-gitmoji-cli/Formula
Running `brew update --auto-update`...
==> Homebrew collects anonymous analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics
No analytics have been recorded yet (nor will be during this `brew` run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
Error: Non-checksummed download of Formula formula file from an arbitrary URL is unsupported! `brew extract` or `brew create` and `brew tap-new` to create a formula file in a tap on GitHub instead.
the release setup is broken
Like #12 this is currently a testing version.
Need to be fixed.
v0.1.0-pre-alpha
Remark
-S
flag has been implemented with #20
Within git you are able to use -m
and -S
flags for the commit
comand e.g.
git commit -S -m "feat(config): :rocket: (#20) map config with cmd options" -m "add a mapping between the config options and the commands"
would be nice if go-gitmoji-cli
would also have those options.
There is a hook available.
Sometimes people want to use the git commit command together with the hook. Therefore the message parts (type, scope, message, gitmoji) should be kept.
Also -S
flag should be available to sign commits (sometimes this is not globally configured)
parse the messages and put the parts as initial values.
when the hook is enabled and doing a merge -> The cli is triggered with hook workflow asking for gitmoji and the other conventional gitmoji commit message parts.
Sometimes this is an unwanted behaviour (e.g. on merge). Therefore it should be possible to configure the merge behaviour.
doing a merge -> use standard git merge message.
make it configurable to use the default git message.
Remark
Also check the hook commit message second message https://git-scm.com/docs/githooks
This might help
prepare-commit-msg
This hook is invoked by [git-commit[1]](https://git-scm.com/docs/git-commit) right after preparing the default log message, and before the editor is started.
It takes one to three parameters. The first is the name of the file that contains the commit log message. The second is the source of the commit message, and can be: message (if a -m or -F option was given); template (if a -t option was given or the configuration option commit.template is set); merge (if the commit is a merge or a .git/MERGE_MSG file exists); squash (if a .git/SQUASH_MSG file exists); or commit, followed by a commit object name (if a -c, -C or --amend option was given).
If the exit status is non-zero, git commit will abort.
The purpose of the hook is to edit the message file in place, and it is not suppressed by the --no-verify option. A non-zero exit means a failure of the hook and aborts the commit. It should not be used as replacement for pre-commit hook.
The sample prepare-commit-msg hook that comes with Git removes the help message found in the commented portion of the commit template.
When usting current version without having .gitmojirc
file present a missleading error message is printed
โ ~ go-gitmoji-cli config -g
____ ____ ____ _ ___ _ _ ____ _ _ ____ _ _
| __ | | __ | __ | | |\/| | | | | __ | | |
|__] |__| |__] | | | | |__| _| | |___ |___ |
ERROR 2023/08/18 00:11:30 get config file: Config File ".gitmojirc" Not Found in "[/home/andy /home/andy/.config/go-gitmoji-cli]"
Gitmoji API url
>https://gitmoji.dev/api/gitmojis
[ Submit ]
โ ~
this error message is not expected
no error message
No response
No response
No response
v0.1.1-pre-alpha
Would be nice to have an easy installation process for different package managers
convenient way of installing the cli
use the gitreleaser publish functionality
Currently release please is used to create releases.
With new release goreleaser is used to deploy the go artifacts.
When manually creating a release this will trigger the goreleaser action but when the release is done with release please, the action is not triggered
when the release is created the goreleaser action should be triggered.
the goreleaser action is not triggered
No response
No response
No response
v0.2.7-alpha
would be nice if the created artifacts contain a signature
To protect the users a signature would be nice
use the functionality of goreleaser
https://goreleaser.com/customization/sign/
Currently the commit types are free text.
Would be nice to have a list to choose from.
types should be the same in a repo.
Therefore would be nice to have a list to choose from.
Have a list with available types and scopes which are shown after the gitmoji list.
Showing the list should be configurable.
As a predefined set of the items the list from angular or commitlint should be a nice start
https://gist.github.com/brianclements/841ea7bffdb01346392c
https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.