gma-lite 0.3.2

Lite GMA (Garry's Mod Addon) archive reader/writer
Documentation
# gma-lite

Minimal Rust library to read and write Garry's Mod Addon (.gma) archives.

- Small API: [`crate::read`]src/reader.rs and [`crate::Builder`]src/builder.rs
- Types: [`crate::GMAFile`]src/lib.rs, [`crate::GmaError`]src/lib.rs
- Format constants: [`crate::HEADER`]src/lib.rs, [`crate::VERSION`]src/lib.rs

## Usage

### Read a GMA

```rust
use gma_lite::read;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let bytes = std::fs::read("addon.gma")?;
    let entries = read(&bytes[..])?; // Vec<GMAFile>

    for e in &entries {
        println!("{} ({} bytes)", e.name(), e.size());
    }
    Ok(())
}
```

### Build a GMA

```rust
use gma_lite::Builder;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut b = Builder::new("My Addon", 76561197960287930);
    b.set_author("you");
    b.set_description("Example addon");
    b.file_from_string("lua/autorun/example.lua", "print('hello from gma-lite')");

    let mut out = Vec::new();
    b.write_to(&mut out)?;
    std::fs::write("my_addon.gma", out)?;
    Ok(())
}
```

## API

- Reader: [`crate::read`]src/reader.rs -> `Result<Vec<crate::GMAFile>, crate::GmaError>`
- Writer: [`crate::Builder`]src/builder.rs with `write_to<W: std::io::Write>(&self, w) -> Result<(), crate::GmaError>`
- Types: [`crate::GMAFile`]src/lib.rs, [`crate::GmaError`]src/lib.rs

See [src/lib.rs](src/lib.rs) for format details and error types.

## License

MIT