diff --git a/CHANGELOG.md b/CHANGELOG.md index b041e3d..981fcd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added support for the automatic user/group creation feature in rpm 4.19 - `PackageBuilder::group()` and `PackageBuilder::packager()` - `PackageBuilder::verify_script()` +- `PackageBuilder::with_file_contents()` - `FileOptions::is_artifact()` and `FileOptions::is_missingok()` ## 0.13.1 diff --git a/src/rpm/builder.rs b/src/rpm/builder.rs index 8998e5e..f6f2391 100644 --- a/src/rpm/builder.rs +++ b/src/rpm/builder.rs @@ -343,6 +343,40 @@ impl PackageBuilder { Ok(self) } + /// Add a file to the package without needing an existing file. + /// + /// Helpful if files are being generated on-demand, and you don't want to write them to disk. + /// + /// ``` + /// # fn foo() -> Result<(), Box> { + /// + /// let pkg = rpm::PackageBuilder::new("foo", "1.0.0", "Apache-2.0", "x86_64", "some baz package") + /// .with_file_contents( + /// " + /// [check] + /// date = true + /// time = true + /// ", + /// rpm::FileOptions::new("/etc/awesome/config.toml").is_config(), + /// )? + /// .with_file_contents( + /// "./awesome-config.toml", + /// // you can set a custom mode, capabilities and custom user too + /// rpm::FileOptions::new("/etc/awesome/second.toml").mode(0o100744).caps("cap_sys_admin=pe")?.user("hugo"), + /// )? + /// .build()?; + /// # Ok(()) + /// # } + /// ``` + pub fn with_file_contents( + mut self, + content: impl Into>, + options: impl Into, + ) -> Result { + self.add_data(content.into(), Timestamp::now(), options.into())?; + Ok(self) + } + fn add_data( &mut self, content: Vec,