# 💖 `rsmoji` 🦀
Hello there! ^w^
This is a simple rust CLI tool to add **emojis** to commits!
It uses [crossterm](https://crates.io/crates/crossterm) and [unicode-segmentation](https://crates.io/crates/unicode-segmentation)
<div>
<img width="100" height="100" src="https://rustacean.net/assets/cuddlyferris.svg" />
<img width="100" src="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/git/git-original.svg" />
</div>
## ✨ Features
- 😃 It adds emojis to git commits
- 🖊️ You can tell it to manually sign a commit (`-S` or `--sign` flag)
- 🚧 The end for now :( (see roadmap for details)
## Installation - using `cargo` (crates.io)
First, ensure you have [rust](https://doc.rust-lang.org/stable/book/ch01-01-installation.html) installed on your system, and then run:
```zsh
cargo install rsmoji
```
You also have to add `$HOME/.cargo/bin` to your `$PATH`
```sh
# bash
echo 'export PATH="$PATH:$HOME/.cargo/bin"' >> ~/.bashrc
# zsh
echo 'export PATH="$PATH:$HOME/.cargo/bin"' >> ~/.zshrc
```
To update, you can use `cargo-update`, install it with `cargo install cargo-update`, and then you can run:
```zsh
cargo-install-update install-update rsmoji
```
## Usage
Just run `rsmoji` without any additional arguments (obviously you need `git`)
You can use emacs keybindings to move the cursor while typing (Ctrl b, Ctrl f, Ctrl p, Ctrl n)
### Roadmap
- [x] Manually sign commits (`-S`)
- [x] Support commit description (not only title)
- [ ] disable/enable with flag
- [ ] go back up to a previous line to edit
- [ ] Support signed tags message
- [ ] Support merge messages
- [ ] Themes (built in and custom)
- [ ] API to update emoji list dynamically (optional)
### Credits
The default colors are [catppuccin-mocha](https://catppuccin.com)
The project was heavily inspired by
[gitmoji](https://github.com/carloscuesta/gitmoji), and the emoji list for this
project is taken from there. I made this mainly because I wanted more features
(which I still haven't implemented), I wanted to learn rust and I wanted
something faster