diff --git a/git.inc.php b/git.inc.php index 3eb8225..8c2d4fa 100644 --- a/git.inc.php +++ b/git.inc.php @@ -12,7 +12,7 @@ task('git_info', function() echo $info; }); -function git_do($repo, $action, &$out = NULL, $verbose = true) +function git_do(string $repo, string $action, &$out = NULL, bool $verbose = true) { $cli = "cd $repo && git $action"; if($verbose) @@ -24,14 +24,16 @@ function git_do($repo, $action, &$out = NULL, $verbose = true) throw new Exception("Error executing command: $cli ($result)"); } -function git_is_repo($directory) +function git_is_repo(string $directory, bool $check_root = false) : bool { + if($check_root && !is_dir("$directory/.git")) + return false; $output = []; git_do($directory, "rev-parse --is-inside-work-tree", $output, false); return !empty($output) && $output[0] === 'true'; } -function git_rev_from_commit_message($message) +function git_rev_from_commit_message(string $message) : string { // Regular expression pattern to extract the commit hash $pattern = '/\b[0-9a-f]{7,40}\b/'; @@ -42,7 +44,7 @@ function git_rev_from_commit_message($message) return $commit_hash; } -function get_git_last_remote_tag($repo) +function get_git_last_remote_tag(string $repo) : string|bool { $remote_tags = []; git_do($repo, 'ls-remote --tags origin', $output, false); @@ -60,7 +62,7 @@ function get_git_last_remote_tag($repo) return _get_last_version_tag($remote_tags); } -function _get_last_version_tag(array $tags) +function _get_last_version_tag(array $tags) : string|bool { if(!$tags) return false; @@ -74,11 +76,11 @@ function _get_last_version_tag(array $tags) class GitVersion { - public $major; - public $minor; - public $patch; + public int $major; + public int $minor; + public int $patch; - static function parse($version_str) + static function parse($version_str) : GitVersion { $parts = explode('.', $version_str); if(sizeof($parts) != 3) @@ -92,7 +94,7 @@ class GitVersion return $v; } - function bump($up_mode) + function bump(int $up_mode) { if($up_mode == 1) ++$this->patch; @@ -111,7 +113,7 @@ class GitVersion throw new Exception("Unsupported up mode: $up_mode"); } - function encode() + function encode() : string { return 'v'.$this->major.'.'.$this->minor.'.'.$this->patch; }