From 6cdc6b1460c2d81d514f03afa3447c81b75ef801 Mon Sep 17 00:00:00 2001 From: Martin Afanasjew Date: Sat, 2 Jul 2016 09:39:00 +0200 Subject: [PATCH] Add GitRepositoryExtension Add an extension for accessing Git-related meta data that can be mixed in into a Pathname object (e.g. `HOMBREW_REPOSITORY` or the path of a `Tap` instance). The goal here is to eliminate code duplication. --- Library/Homebrew/extend/git_repository.rb | 47 +++++++++++++++++++++++ Library/Homebrew/global.rb | 1 + 2 files changed, 48 insertions(+) create mode 100644 Library/Homebrew/extend/git_repository.rb diff --git a/Library/Homebrew/extend/git_repository.rb b/Library/Homebrew/extend/git_repository.rb new file mode 100644 index 0000000000..c15988550f --- /dev/null +++ b/Library/Homebrew/extend/git_repository.rb @@ -0,0 +1,47 @@ +require "utils/git" +require "utils/popen" + +module GitRepositoryExtension + def git? + join(".git").exist? + end + + def git_origin + return unless git? && Utils.git_available? + cd do + Utils.popen_read("git", "config", "--get", "remote.origin.url").chuzzle + end + end + + def git_head + return unless git? && Utils.git_available? + cd do + Utils.popen_read("git", "rev-parse", "--verify", "-q", "HEAD").chuzzle + end + end + + def git_short_head + return unless git? && Utils.git_available? + cd do + Utils.popen_read( + "git", "rev-parse", "--short=4", "--verify", "-q", "HEAD" + ).chuzzle + end + end + + def git_last_commit + return unless git? && Utils.git_available? + cd do + Utils.popen_read("git", "show", "-s", "--format=%cr", "HEAD").chuzzle + end + end + + def git_last_commit_date + return unless git? && Utils.git_available? + cd do + Utils.popen_read( + "git", "show", "-s", "--format=%cd", "--date=short", "HEAD" + ).chuzzle + end + end +end diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index 02ff15e39f..ab6bd9d5cf 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -1,6 +1,7 @@ require "extend/module" require "extend/fileutils" require "extend/pathname" +require "extend/git_repository" require "extend/ARGV" require "extend/string" require "extend/enumerable"