mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-22 05:29:36 +00:00
33 lines
887 B
Rust
33 lines
887 B
Rust
use std::path::Path;
|
|
use std::process::Command;
|
|
|
|
/// Checks if the `git` executable is available in the system's PATH.
|
|
///
|
|
/// This function executes `git --version` and returns `true` if the command succeeds, `false` otherwise.
|
|
pub fn is_git_available() -> bool {
|
|
Command::new("git")
|
|
.arg("--version")
|
|
.output()
|
|
.map(|o| o.status.success())
|
|
.unwrap_or(false)
|
|
}
|
|
|
|
/// Initializes a new Git repository at the specified path.
|
|
pub fn git_init(path: &Path) -> Result<(), String> {
|
|
if !is_git_available() {
|
|
return Err("git executable not found in PATH".to_string());
|
|
}
|
|
|
|
let status = Command::new("git")
|
|
.arg("init")
|
|
.current_dir(path)
|
|
.status()
|
|
.map_err(|e| format!("failed to execute git init: {}", e))?;
|
|
|
|
if !status.success() {
|
|
return Err("git init failed".to_string());
|
|
}
|
|
|
|
Ok(())
|
|
}
|