diff --git a/helpers.inc.php b/helpers.inc.php index dcc6cf1..e6e1366 100644 --- a/helpers.inc.php +++ b/helpers.inc.php @@ -604,49 +604,66 @@ function rrmdir(string $dir, bool $remove_top_dir = true) } } -function git_get_info() : array +define("GIT_INFO_REV_HASH" , 1 << 0); +define("GIT_INFO_BRANCH" , 1 << 1); +define("GIT_INFO_REV_NUMBER", 1 << 2); +define("GIT_INFO_ALL" , ~0); + +function git_get_info($info = GIT_INFO_ALL) : array { global $GAME_ROOT; + $rev_hash = ""; + $branch = ""; + $revision_number = 0; if(!is_dir("$GAME_ROOT/.git")) throw new Exception("Not a Git repository"); - $out = array(); - exec("git rev-parse HEAD", $out); - $rev_hash = trim($out[0]); - if(!$rev_hash) - throw new Exception("Error getting git revision hash"); + if($info & GIT_INFO_REV_HASH) + { + $out = array(); + exec("git rev-parse HEAD", $out); + $rev_hash = trim($out[0]); + if(!$rev_hash) + throw new Exception("Error getting git revision hash"); + } - $out = array(); - exec("git rev-parse --abbrev-ref HEAD", $out); - $branch = trim($out[0]); - if(!$branch) - throw new Exception("Error getting git branch"); + if($info & GIT_INFO_BRANCH) + { + $out = array(); + exec("git rev-parse --abbrev-ref HEAD", $out); + $branch = trim($out[0]); + if(!$branch) + throw new Exception("Error getting git branch"); + } - $out = array(); - exec("git rev-list HEAD --count", $out); - $revision_number = (int)$out[0]; - if(!$revision_number) - throw new Exception("Error getting git revision number"); + if($info & GIT_INFO_REV_NUMBER) + { + $out = array(); + exec("git rev-list HEAD --count", $out); + $revision_number = (int)$out[0]; + if(!$revision_number) + throw new Exception("Error getting git revision number"); + } return array($rev_hash, $branch, $revision_number); } function git_get_rev_hash() : string { - list($rev_hash, $_, $__) = git_get_info(); + list($rev_hash, $_, $__) = git_get_info(GIT_INFO_REV_HASH); return $rev_hash; } function git_get_branch() : string { - list($_, $branch, $__) = git_get_info(); + list($_, $branch, $__) = git_get_info(GIT_INFO_BRANCH); return $branch; } function git_get_rev_number() : string { - list($_, $__, $rev_number) = git_get_info(); + list($_, $__, $rev_number) = git_get_info(GIT_INFO_REV_NUMBER); return $rev_number; }