modelfile 0.3.0

A parser for Ollama Modelfiles
Documentation
# `modelfile`

[![build](https://github.com/covercash2/modelfile/actions/workflows/rust.yml/badge.svg)](https://github.com/covercash2/modelfile/actions/workflows/rust.yml)

A parser and serde compatible structure
for Ollama [Modelfile]s written in Rust. 🦀

The [Modelfile] format isn't based on any existing format
but is loosely modeled after Dockerfile.

The parser is based on the [`nom`] crate
and tested on a few distinct [Modelfile]s.
If you find a [Modelfile] that doesn't parse,
please open an issue!

## I have a Modelfile, but I want a `struct`!

Good news!

```rust
use modelfile::modelfile::Modelfile;

fn parse() {
    let my_modelfile_string = std::fs::read_to_string("./test/llama3.2:latest.Modelfile")
        .expect("handle your dang errors");

    let my_modelfile: Modelfile = my_modelfile_string.parse()
        .expect("if your Modelfile is good this should work!");

    let mut builder = my_modelfile.build_on();

    let builder = builder
        .system("You are a malevolent, world-ending AI agent")
        .expect("only one system message allowed");

    let my_new_modelfile = builder.build()
        .expect("you did it right. you're smart")
        .render();

    std::fs::write("Modelfile", my_new_modelfile)
        .expect("should be able to write to your own dang disk");
}

```

[Ollama]: https://ollama.com/
[Modelfile]: https://github.com/ollama/ollama/blob/main/docs/modelfile.md
[`nom`]: https://github.com/rust-bakery/nom