(project_root: &Path, args: &[&str])
| 856 | } |
| 857 | |
| 858 | fn git_output(project_root: &Path, args: &[&str]) -> Option<String> { |
| 859 | let output = std::process::Command::new(crate::git::git_program()) |
| 860 | .args(args) |
| 861 | .current_dir(project_root) |
| 862 | .output() |
| 863 | .ok()?; |
| 864 | if !output.status.success() { |
| 865 | return None; |
| 866 | } |
| 867 | let text = String::from_utf8(output.stdout).ok()?; |
| 868 | let text = text.trim(); |
| 869 | (!text.is_empty()).then(|| text.to_string()) |
| 870 | } |
| 871 | |
| 872 | fn profile_graph_scope_id(store_id: &str, branch_name: &str) -> String { |
| 873 | format!("{store_id}:branch:{branch_name}") |
no test coverage detected