# frozen_string_literal: true class GitUtils def self.git_version self.try_git("git rev-parse HEAD", "unknown") end def self.git_branch self.try_git("git branch --show-current", nil) || self.try_git("git config user.discourse-version", "unknown") end def self.full_version self.try_git('git describe --dirty --match "v[0-9]*" 2> /dev/null', "unknown") end def self.last_commit_date git_cmd = 'git log -1 --format="%ct"' seconds = self.try_git(git_cmd, nil) seconds.nil? ? nil : DateTime.strptime(seconds, "%s") end def self.try_git(git_cmd, default_value) value = begin `#{git_cmd}`.strip rescue StandardError default_value end (!value.empty? ? value : nil) || default_value end end