use std::path::PathBuf;
use anyhow::Result;
use cleanlib_client::risk_acceptance;
pub fn run(
package: String,
version: String,
justification: String,
proposed_by: Option<String>,
write_to: Option<PathBuf>,
) -> Result<()> {
let rule = risk_acceptance::Rule {
package,
version_range: version,
justification,
proposed_by,
proposed_at: chrono::Utc::now(),
};
let yaml = risk_acceptance::emit_yaml(&rule);
match write_to {
Some(path) => {
if let Some(parent) = path.parent() {
if !parent.as_os_str().is_empty() {
std::fs::create_dir_all(parent)?;
}
}
std::fs::write(&path, &yaml)?;
eprintln!("wrote {} ({} bytes)", path.display(), yaml.len());
}
None => print!("{}", yaml),
}
Ok(())
}