A Rust based Ollama wrapper for generating git related shit
Go to file
2025-01-12 13:10:43 -05:00
src "feat(commit_handler): Update commit handler to generate commit message based on diff changes." 2025-01-12 13:10:43 -05:00
.gitignore init commit with logic 2024-12-10 08:20:22 -05:00
Cargo.lock Task(main): Remove unused dependencies. 2024-12-10 12:06:43 -05:00
Cargo.toml Task(main): Remove unused dependencies. 2024-12-10 12:06:43 -05:00
README.md update readme 2025-01-11 08:20:47 -05:00

Ferro

A rust base llm wrapper for generating git commits and descriptions

How to read

This readme can be read As-Is but youll be missing some nice visuals. If you want to see those, you need two tools:

  1. graph-easy
  2. slides

figure out how to get those installed on your OS and then come back, otherwise, continue on...

Fun Facts

Scientific Roots

  1. Ferrum: Latin for iron, reflecting Rust's iron/oxidation themes.
  2. Ferro-: Greek prefix meaning iron or iron-containing.

Relevant Connections

  1. Ferrocene: An iron-containing compound.
  2. Ferroelectric: Materials exhibiting iron-like electrical properties.

Simple, Modern Sound

"Ferro" is concise, memorable and has a technical feel, fitting for a Rust CLI tool.

continue to architecture on next page


Architecture

I just wanted to split things up in a cohesive way. Where one node is resposible for its own thing and returns whatever data, it creates, to its caller

this is a graph demonstrating the mvp architecture 

~~~graph-easy --as=boxart
graph { flow: east; }
[main]->{start:front; end:back}[arg parser]
[arg parser] -> {start:front,0; end:back;} [pr handler]
[arg parser] -> {start:front,0; end:back;} [commit handler]
[pr handler], [commit handler] -> {start:front; end:back,0;} [ml interface]
[ml interface] -> [out]

[commit handler] <=> [banana]
[pr handler] <=> [apple]
~~~

continue to next slide to see mvp v2 architecture


this is a graph demonstrating the mvp (v2) architecture 

~~~graph-easy --as=boxart
graph { flow: east; }
[main]->{start:front; end:back}[arg parser]
[arg parser] -> {start:front,0; end:back;} [pr handler]
[arg parser] -> {start:front,0; end:back;} [commit handler]
[pr handler], [commit handler] -> {start:front; end:back,0;} [ml interface]
[ml interface] -> [out]

[commit handler] <=> [banana]
[pr handler] <=> [apple]
[config loader]{ origin: main; offset: 0,-2; } -> {start:right; end:left} [main] 
[interactive] { origin: arg parser; offset: 0,-2; } <== no args ==> {start:right; end:left}[arg parser]
~~~