๐Ÿ“ฆ feliblo / gifferno

๐Ÿ“„ README.md ยท 196 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196# ๐Ÿ”ฅ gifferno

**Blazingly fast GIFs in your terminal.** ๐Ÿฆ€๐Ÿ”ฅ

Transform any GIF into beautiful art that plays directly in your terminal. Built with Rust for maximum performance and terminal aesthetics.

## โœจ Features

- ๐ŸŽจ **Customizable characters** - Use any character to render your GIFs
- ๐Ÿ’พ **Save & manage** - Store your favorite GIFs locally with custom names
- ๐Ÿ” **Interactive picker** - Browse and select 
- ๐Ÿš€ **Blazingly fast** - Written in Rust for optimal performance
- ๐Ÿ“ฑ **Cross-platform** - Works on macOS, Linux, and Windows

## ๐Ÿš€ Installation

### From Source (Recommended)

In alpha still, releases with easier build strategies will come.
```bash
git clone https://github.com/username/gifferno.git
cd gifferno
cargo build --release
cargo install --path .
```

### Using Cargo

```bash
cargo install gifferno
```

## ๐Ÿ“– Usage


## ๐Ÿ› ๏ธ Commands Reference

| Command | Description | Arguments |
|---------|-------------|-----------|
| `run` | Play a GIF directly from file path | `--file-path`, `--print-character` |
| `save` | Save a GIF to local database | `--file-path`, `--name` |
| `get` | Retrieve and play a saved GIF | `--name`, `--print-character` |
| `pick` | Interactive GIF selector | None |
| `delete` | Remove a saved GIF | `--name` |
| `clear` | Clear entire GIF database | None |

### Argument Details

- `--file-path` / `-f`: Path to the GIF file
- `--name` / `-n`: Custom name for saving/retrieving GIFs
- `--print-character` / `-p`: Character used for rendering (default: `#`)

### Running

```bash
# Run a GIF directly from file
gifferno run --file-path ./my-gif.gif

# Use custom characters for rendering
gifferno run --file-path ./nyan-cat.gif --print-character "?"
```

### Managing Your GIF Collection

```bash
# Save a GIF with a memorable name
gifferno save --file-path ./epic-fail.gif --name "fail"

# Retrieve and play a saved GIF
gifferno get --name "fail"

# Play with custom characters
gifferno get --name "fail" --print-character ""

# Browse your collection interactively
gifferno pick

# Remove a specific GIF
gifferno delete --name "fail"

# Clear your entire collection (be careful!)
gifferno clear
```

### Example Commands

```bash
# Basic usage
gifferno run -f ./dance.gif

# Custom character rendering
gifferno run -f ./fire.gif -p "^"

# Save for later
gifferno save -f ./cat.gif -n "grumpy-cat"

# Quick access to saved GIFs
gifferno get -n "grumpy-cat" -p "~"

# Interactive mode
gifferno pick
```





## ๐Ÿ› Issues & Bug Reports

Found a bug? We'd love to hear about it! Please:

1. Check existing issues first
2. Provide detailed reproduction steps
3. Include your system information
4. Add relevant error messages or logs

[Create an Issue](https://github.com/username/gifferno/issues/new)


## ๐Ÿค Contributing
### Getting Started

1. **Fork the repository**
2. **Create a feature branch**
   ```bash
   git checkout -b feature/amazing-feature
   ```
3. **Make your changes**
4. **Write tests** for your code
5. **Ensure tests pass**
   ```bash
   cargo test
   ```
6. **Format your code**
   ```bash
   cargo fmt
   ```
7. **Run clippy**
   ```bash
   cargo clippy
   ```
8. **Commit your changes**
- Use [gitmoji](https://gitmoji.dev/) or [howmoji](https://github.com/Felix-Blom/howmoji) conventional commit messages.
   ```bash
   # Choose one
   gitmoji -c 
   howmoji -c
   ```
9. **Push to your branch**
   ```bash
   git push origin feature/amazing-feature
   ```
10. **Open a Pull Request**
   - Please make sure your pull request is rebased on the latest version of the application.

### Development Workflow

- Create issues for bugs and feature requests
- Use [gitmoji](https://gitmoji.dev/) or [howmoji](https://github.com/Felix-Blom/howmoji) conventional commit messages.
- Ensure all tests pass before submitting PR
- Update documentation for new features
- Follow Rust best practices and idioms

### Code Standards

- Run `cargo fmt` before committing
- Ensure `cargo clippy` passes without warnings
- Add tests for new functionality
- Update README if adding new commands or features

### ๐Ÿงช Testing

```bash
# Run all tests
cargo test

# Run tests with output
cargo test -- --nocapture

# Run specific test
cargo test test_name
```

## ๐Ÿ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## ๐Ÿ™ Acknowledgments

- Built with [Rust](https://www.rust-lang.org/) ๐Ÿฆ€
- CLI powered by [clap](https://github.com/clap-rs/clap)

---
**Made with โค๏ธ and lots of ๐Ÿ”ฅ by the gifferno community**

*Star โญ this repo if you find it useful!*