use std::{error::Error, process::Command};
use super::new;
pub fn run(command: &[String]) -> Result<(), Box<dyn Error>> {
let (program, args) = command
.split_first()
.ok_or("ino exec requires a command to run")?;
let info = new::version_info()?;
let semver = info.semver.to_string();
let status = Command::new(program)
.args(args)
.env("INO_VERSION", &semver)
.env("INO_SEMVER", &semver)
.env("INO_AUTOINCREMENT", info.autoincrement.to_string())
.env("INO_COMMIT_DATE", &info.commit_date)
.env("INO_COMMIT_HASH", &info.commit_hash)
.env("VERSION", &semver)
.env("VERSION_SEMVER", &semver)
.env("VERSION_AUTOINCREMENT", info.autoincrement.to_string())
.env("VERSION_COMMIT_DATE", &info.commit_date)
.env("VERSION_COMMIT_HASH", &info.commit_hash)
.status()?;
if !status.success() {
std::process::exit(status.code().unwrap_or(1));
}
Ok(())
}