use super::LinkFileError;
use std::path::Path;
#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub enum AppleCodeSignBehavior {
DoNothing,
Ignore,
#[default]
Fail,
}
pub(crate) fn codesign(destination_path: &Path) -> Result<(), LinkFileError> {
let status = std::process::Command::new("/usr/bin/codesign")
.arg("--sign")
.arg("-")
.arg("--force")
.arg("--preserve-metadata=entitlements")
.arg(destination_path)
.stdout(std::process::Stdio::null()) .stderr(std::process::Stdio::null()) .status()
.map_err(|err| LinkFileError::IoError(String::from("invoking /usr/bin/codesign"), err))?;
if !status.success() {
return Err(LinkFileError::FailedToSignAppleBinary);
}
Ok(())
}