use std::{path::Path, process::Command};
use anyhow::Result;
use tracing::debug;
use crate::{Binary, Platform, util};
pub fn codesign(
path: &Path,
binary: &Binary,
signing_identity: &str,
entitlements_path: Option<&Path>,
) -> Result<()> {
let mut cmd = Command::new("codesign");
cmd.arg("--force");
cmd.arg("--sign");
cmd.arg(signing_identity);
if let Some(entitlements_path) = entitlements_path {
cmd.arg("--entitlements");
cmd.arg(entitlements_path);
cmd.arg("--generate-entitlement-der");
}
if binary.platform() == Platform::MACOS {
cmd.arg("--timestamp=none");
}
cmd.arg(path);
debug!("{cmd:?}");
let stdout = util::command_stdout(cmd)?;
debug_assert_eq!(stdout, b"");
Ok(())
}