3 unstable releases
new 0.2.1 | May 24, 2025 |
---|---|
0.2.0 | May 24, 2025 |
0.1.0 | May 24, 2025 |
#587 in Command line utilities
18KB
233 lines
juckx 🚀
juckx is a Rust-based CLI tool that automates the process of creating meaningful git commit messages by leveraging Gemini AI. With one simple command, it stages your changes, generates a concise commit message based on your code diffs or new files, commits, and pushes to the remote repository.
Features ✨
- ✅ Detects if the current folder is a git repository and handles the initial commit scenario gracefully.
- 📝 Extracts staged diffs or untracked files to generate an accurate prompt for AI.
- 🤖 Generates professional and concise commit messages in imperative mood using Gemini AI.
- 🔍 Supports dry-run mode to preview the generated commit message without committing.
- 🚫 Allows skipping push with a command-line option.
- 🌐 Supports specifying commit message language via CLI.
- 🔑 Supports setting and saving Gemini API key to a
.env
file from the CLI. - ⚙️ Automates the full git workflow: add, commit, and push with one command.
- 🦀 Written in Rust with asynchronous processing powered by Tokio.
Installation 🛠️
Build from source using Cargo:
git clone https://github.com/morphqdd/juckx.git
cd juckx
cargo build --release
Pre-built binaries coming soon.
Usage 💻
juckx [OPTIONS]
Options
--dry-run
— Generate and display the commit message without committing or pushing.--no-push
— Commit changes but skip pushing to remote.--lang <LANG>
— Specify the language for commit message generation (default:en
).--with-api <API_KEY>
— Save Gemini API key to.env
file for later use.
Example 🚀
juckx --with-api YOUR_API_KEY --lang ru
This will:
- Save the API key to
.env
. - Check if the current directory is a git repo.
- Use untracked files if no commits exist, otherwise get the staged diff.
- Generate a commit message via Gemini AI.
- Show the generated commit message.
- Stage all changes.
- Commit with the generated message.
- Push to the remote repository (unless
--no-push
is specified).
Contributing 🤝
Contributions and suggestions are welcome! Feel free to open issues or pull requests.
License 📄
Dependencies
~8–19MB
~256K SLoC