rpmspec-rs

GitHub Actions MIT licensed Released API docs

Crate for RPM spec generation in Rust

Usage

This crate provides a simple builder interface for RPM spec files generation.

Here's an example of building a spec file from scratch (some fields are ommited):

```rust use rpmspec::RpmSpec;

fn main() -> Result<(), std::boxed::Box> { let spec = RpmSpec::builder() .name("rpmspec") .license("MIT") .summary("short summary") .description("very long summary...") .buildscript(BUILD) .installscript(INSTALL) .prepscript(r#"cat /etc/os-release"#) .checkscript("uptime") .url("https://github.com/wojciechkepka/rpmspec") .version("0.1.0") .release("1") .epoch("42") .vendor("Wojciech Kępka") .packager("Wojciech Kępka wojciech@wkepka.dev") .copyright("2021 test") .buildarch("noarch") .excludearch("x8664") .group("group") .icon("rpm.xpm") .buildroot("/root/bld") .addpatchesentries(vec!["patch.1", "patch.2"]) .addsourcesentries(vec!["source.tar.gz", "source-2.tar.xz"]) .addfilesentries(vec!["/bin/test.bin", "/docs/README"]) .adddocfilesentries(vec!["README"]) .addlicensefilesentries(vec!["LICENSE"]) .addprovidesentries(vec!["rpmspec"]) .addrequiresentries(vec!["rust"]) .addbuildrequiresentries(vec!["rust", "cargo"]) .addobsoletesentries(vec!["rpmspec-old"]) .addconflictsentries(vec!["rpmspec2"]) .confignoreplace("%{sysconfdir}/%{name}/%{name}.conf") .prescript("echo") .postscript("false") .preunscript("echo 123") .postunscript("true") .addmacro("githash", None::<&str>, "0ab32f") .add_macro("python", Some("-c"), "import os") .build();

// you can later render it to a string like so:
let _rendered = spec.render()?;

// or save it directly to a file
spec.save_to("/tmp/RPMSPEC")?;

Ok(())

}

```

License

MIT