use crate::child_environment::environment_value;
use crate::command_push::parse_push_region;
use crate::lfs_pre_push::{hook_switched_off, missing_program_message, program_on_path, skip_requested};
use std::ffi::OsString;
pub fn lfs_refusal(
global_prefix: &[OsString],
region: &[OsString],
environment: &[(OsString, OsString)],
) -> Option<String> {
if hook_switched_off(global_prefix, environment) || skip_requested(environment) {
return None;
}
let parsed = parse_push_region(region, &[]).ok()?;
if parsed.no_verify || parsed.dry_run {
return None;
}
let path: OsString = environment_value(environment, "PATH").unwrap_or_default();
if program_on_path(path.as_os_str()) {
return None;
}
return Some(missing_program_message());
}
#[cfg(test)]
#[path = "lfs_push_precheck_tests.rs"]
mod tests;