A python command-line for gitmoji
Project description
gitmopy
An interactive Python implementation of the Gitmoji convention: gitmoji.dev/
pip install gitmopy
How to use
- I typically use
$ gitmopy commit --add --keep-alive
- Navigate through options with ⬆️ and ⬇️
- Select option with
space
- Validate selection with
enter
- Press
tab
to auto-complete- Press
tab
on an empty line to see history
- Press
- Restart commit with
crtl+c
- The keyboard interruption will be caught once, then press
enter
to restart
- The keyboard interruption will be caught once, then press
- Push (and set upstream if need be)
- Commit again 🔄
You can also select another set of default emojis tailored towards AI/ML development by running gitmopy config
then pressing Enter
and choosing ai-devmojis
as the config option.
Use your own emojis by editing the "custom emojis" file listed by gitmopy info
!
Suggested shortcuts
alias gpy="gitmopy"
alias gpyc="gitmopy commit"
alias gpya="gitmopy commit --add"
alias gpyk="gitmopy commit --add --keep-alive"
Examples
# Typical daily use-case
# ----------------------
# continuously commit, interactively select files to stage
$ gitmopy commit --add --keep-alive
# same using an alias, + push after every commit (could be dangerous)
$ gpyk --push
# Specific usage
# --------------
# commit currently staged files. Will fail if no file is staged.
$ gitmopy commit
# Enable interactive file selection if no file is currently staged. Ignored if
# there are staged files.
$ gitmopy commit --add
# Commit continuously: don't leave the CLI after the first commit but restart
# the commit procedure.
$ gitmopy commit --keep-alive
# Push to remote repositories after commit.
# Interactively select remotes to push to if there are more than 1.
$ gitmopy commit --push
# Push to specific remotes
$ gitmopy commit --push --remote origin --remote upstream
# Make and display a commit message without staging/committing/pushing
$ gitmopy commit --dry
# configure gitmopy
$ gitmopy config
# print version, data paths and current configuration
$ gitmopy info
# print helps
$ gitmopy --help
$ gitmopy commit --help
⚠️ The sync feature is still experimental. It will pull
then push
but in the case of several remotes and the branch not existing on one of them, I recommend you deal with it with git
manually.
User guide
$ gitmopy info
gitmopy info:
version : 0.4.2
app path : /Users/victor/.gitmopy
history : /Users/victor/.gitmopy/history.json
config : /Users/victor/.gitmopy/config.yaml
custom emojis: /Users/victor/.gitmopy/custom_gitmojis.yaml
Current configuration:
skip_scope : False
skip_message : False
capitalize_title: True
enable_history : True
emoji_set : gitmoji
Update configuration with
$ gitmopy config
$ gitmopy config
❓ Configure gitmopy locally. Use 'space' to (de-)select, 'enter' to validate.
❯ ○ Skip commit scope
○ Skip commit message
◉ Capitalize commit title
◉ Remember commit history for auto-complete and emoji sorting
Config will be saved in /Users/victor/.gitmopy/config.yaml.
Get help with
$ gitmopy --help
Usage: gitmopy [OPTIONS] COMMAND [ARGS]...
╭─ Options ───────────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy it or │
│ customize the installation. │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ──────────────────────────────────────────────────────────────────────────╮
│ commit Commit staged files. Use --add to interactively select files to stage if │
│ none is already staged │
│ config Configure gitmopy │
│ info Print gitmopy info │
╰─────────────────────────────────────────────────────────────────────────────────────╯
$ gitmopy commit --help
Usage: gitmopy commit [OPTIONS]
Commit staged files. Use --add to interactively select files to stage if none is
already staged
╭─ Options ───────────────────────────────────────────────────────────────────────────╮
│ --repo TEXT Path to the git repository [default: .] │
│ --add --no-add Whether or not to interactively select │
│ files to stage if none is already staged │
│ [default: no-add] │
│ --push --no-push Whether to `git push` after commit. If │
│ multiple remotes exist, you will be asked │
│ to interactively choose the ones to push │
│ to. Use --remote to skip interactive │
│ selection. Disabled by default. │
│ [default: no-push] │
│ --dry --no-dry Whether or not to actually commit. │
│ [default: no-dry] │
│ --remote TEXT Remote to push to after commit. Use to │
│ skip interactive remote selection when │
│ several exist. Use several '--remote │
│ {remote name}' to push to multiple remotes │
│ --keep-alive --no-keep-alive Whether or not to keep the app alive after │
│ commit, to be ready for another one. │
│ [default: no-keep-alive] │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────────╯
To Do
- Features
- If requested:
- Install hook
git commit
flags (like-S
)- max history length (if loading the json becomes slow)
- If requested:
- Tests
- typer.tiangolo.com/tutorial/testing/
- 👋 Help wanted
- Docs
- Not critical
Resources
gitmopy
is inspired by gitmoji-cli
.
It is built thanks to:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gitmopy-0.4.2.tar.gz
.
File metadata
- Download URL: gitmopy-0.4.2.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.9.2 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 444899cdb47955fe52d624ccb00370db1eb545adeed4e41ae07015815573af9e |
|
MD5 | 2bac9639ba2c4f6414c293d2bef47fa9 |
|
BLAKE2b-256 | 9a8780b0bb72608b5fe452a778f4aff9ffa0b23cf7f7d29766a3296d85294e8c |
File details
Details for the file gitmopy-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: gitmopy-0.4.2-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.9.2 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 580753222ba927cdaeb11c5f27eda331f8b96bf3efe35d4040bb560961a024b9 |
|
MD5 | 77188daeb5327c70d29dc3e687f45024 |
|
BLAKE2b-256 | 4e6b1dc879e7e5f469812ef53a3999b9b83de19853a511b8860e40f6375a85c7 |