Skip to main content

A python command-line for gitmoji

Project description

gitmopy

An interactive Python implementation of the Gitmoji convention: gitmoji.dev/

pip install gitmopy

demo-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
  • Restart commit with crtl+c
    • The keyboard interruption will be caught once, then press enter to restart
  • 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!

See all available emojis

Suggested shortcuts

alias gpy="gitmopy"
alias gpyc="gitmopy commit"
alias gpya="gitmopy commit --add"
alias gpyk="gitmopy commit --add --keep-alive"

gpyk depo

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)
  • Tests
  • Docs
    • Not critical

Resources

gitmopy is inspired by gitmoji-cli.

It is built thanks to:

Project details


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.4.2.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

gitmopy-0.4.2-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

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

Hashes for gitmopy-0.4.2.tar.gz
Algorithm Hash digest
SHA256 444899cdb47955fe52d624ccb00370db1eb545adeed4e41ae07015815573af9e
MD5 2bac9639ba2c4f6414c293d2bef47fa9
BLAKE2b-256 9a8780b0bb72608b5fe452a778f4aff9ffa0b23cf7f7d29766a3296d85294e8c

See more details on using hashes here.

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

Hashes for gitmopy-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 580753222ba927cdaeb11c5f27eda331f8b96bf3efe35d4040bb560961a024b9
MD5 77188daeb5327c70d29dc3e687f45024
BLAKE2b-256 4e6b1dc879e7e5f469812ef53a3999b9b83de19853a511b8860e40f6375a85c7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page