rona 2.4.0

A simple CLI tool to help you with your git workflow.
rona-2.4.0 is not a library.

🔌 Rona

Overview

Rona is a command-line interface tool designed to enhance your Git workflow with powerful features and intuitive commands. It simplifies common Git operations and provides additional functionality for managing commits, files, and repository status.

Features

  • 🚀 Intelligent file staging with pattern exclusion
  • 📝 Structured commit message generation
  • 🔄 Streamlined push operations
  • 🎯 Interactive commit type selection
  • 🛠 Multi-shell completion support (Bash, Fish, Zsh, PowerShell)

Installation

cargo install rona
rona init [editor] # The editor to use for commit messages [vim, zed] (default: nano)

Quick Start

  1. Add files excluding patterns:
rona -a "*.rs"  # Exclude all Rust files
  1. Generate commit message:
rona -g  # Opens interactive commit type selector
  1. Commit changes:
rona -c [ARGS] # Commits using message from commit_message.md
# Push changes to remote repository
rona -cp [ARGS] # here, the args will be passed to git commit

Command Reference

add-with-exclude (-a)

Add files to Git staging while excluding specified patterns.

rona add-with-exclude <pattern(s)>
# or
rona -a <pattern(s)>

Example:

rona -a "*.rs" "*.tmp"  # Exclude Rust and temporary files

commit (-c)

Commit changes using prepared message.

rona commit [extra args]
# or
rona -c [-p | --push] [extra args]

completion

Generate shell completion scripts.

rona completion <shell>

Supported shells: bash, fish, zsh, powershell

Example:

rona completion fish > ~/.config/fish/completions/rona.fish

generate (-g)

Generate or update commit message template.

rona generate
# or
rona -g

Features:

  • Creates commit_message.md and .commitignore
  • Interactive commit type selection
  • Automatic file change tracking
  • Opens in default editor (set via EDITOR env variable)

init (-i)

Initialize Rona configuration.

rona init [editor] # The editor to use for commit messages [vim, zed] (default: nano)

list-status (-l)

Display repository status (primarily for shell completion).

rona list-status
# or
rona -l

push (-p)

Push committed changes to remote repository.

rona push [extra args]
# or
rona -p [extra args]

set-editor (-s)

Set the default editor for commit messages.

rona set-editor <editor> # The editor to use for commit messages [vim, zed], no default here

help (-h)

Display help information.

rona help
# or
rona -h

Shell Completion

Rona supports auto-completion for multiple shells using clap_complete.

Generate Completions

Generate completion files for your shell:

# Generate completions for specific shell
rona completion fish    # Fish shell
rona completion bash    # Bash
rona completion zsh     # Zsh  
rona completion powershell  # PowerShell

# Save to file
rona completion fish > ~/.config/fish/completions/rona.fish

Installation by Shell

Fish Shell:

# Copy to Fish completions directory
rona completion fish > ~/.config/fish/completions/rona.fish

Bash:

# Add to your .bashrc
rona completion bash >> ~/.bashrc
source ~/.bashrc

Zsh:

# Add to your .zshrc or save to a completions directory
rona completion zsh >> ~/.zshrc

PowerShell:

# Add to your PowerShell profile
rona completion powershell | Out-File -Append $PROFILE

Features

The completions include:

  • All command and flag completions
  • Git status file completion for add-with-exclude command (Fish only)
  • Context-aware suggestions

Development

Requirements

  • Rust 2021 edition or later
  • Git 2.0 or later

Building from Source

git clone https://github.com/TomPlanche/rona.git
cd rona
cargo build --release

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

Licensed under either of:

at your option.

Support

For bugs, questions, and discussions please use the GitHub Issues.