A python command-line for gitmoji
Project description
gitmopy
An interactive Python implementation of the Gitmoji standard: https://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
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.3.5
app path: /Users/victor/.gitmopy
history : /Users/victor/.gitmopy/history.json
config : /Users/victor/.gitmopy/config.yaml
Current configuration:
skip_scope : False
skip_message : False
capitalize_title: True
enable_history : True
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
- https://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
gitmopy-0.3.5.tar.gz
(19.7 kB
view details)
Built Distribution
gitmopy-0.3.5-py3-none-any.whl
(19.8 kB
view details)
File details
Details for the file gitmopy-0.3.5.tar.gz
.
File metadata
- Download URL: gitmopy-0.3.5.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.9.2 Darwin/22.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5664e8e90147f78484d2cf7c658ec49ffed0d87487dd5eb844c7cbf58db329f |
|
MD5 | cfc53efa9ae6e9d40a0c95b9cc469ff4 |
|
BLAKE2b-256 | ea607cc1e9c08230464ddd8a9fe360972e89f45d0411e9723ffc6a7d20baacf3 |
File details
Details for the file gitmopy-0.3.5-py3-none-any.whl
.
File metadata
- Download URL: gitmopy-0.3.5-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.9.2 Darwin/22.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06e7332cfd8989cd57a791278fff19e8eb4333ed64589a978af7f2af54b432db |
|
MD5 | 1ce9e0ac8367338728be76ec8774a8ac |
|
BLAKE2b-256 | 20102013b3dc6775a9bdd75ce0f648963b6cadf1b52b65ad9c2eaee6bad86ab8 |