blob: a5d58f0c80847cb06b197b655f22577ee2dc861e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
use std::path::Path;
pub(crate) fn shell_single_quote(value: &str) -> String {
format!("'{}'", value.replace('\'', "'\"'\"'"))
}
pub(crate) fn hook_command(hook_path: &Path, action: Option<&str>) -> String {
let path = hook_path.display().to_string();
#[cfg(windows)]
{
let mut command = format!(
"powershell -NoProfile -ExecutionPolicy Bypass -File {}",
windows_command_quote(&path)
);
if let Some(action) = action {
command.push(' ');
command.push_str(action);
}
command
}
#[cfg(not(windows))]
{
let mut command = format!("bash {}", shell_single_quote(&path));
if let Some(action) = action {
command.push(' ');
command.push_str(action);
}
command
}
}
pub(crate) fn legacy_bash_hook_command(hook_path: &Path, action: Option<&str>) -> String {
let mut command = format!(
"bash {}",
shell_single_quote(&hook_path.display().to_string())
);
if let Some(action) = action {
command.push(' ');
command.push_str(action);
}
command
}
#[cfg(windows)]
fn windows_command_quote(value: &str) -> String {
format!("\"{}\"", value.replace('"', "\\\""))
}
|