From: Felipe Contreras Date: Fri, 19 Apr 2013 19:30:28 GMT Subject: [PATCH v3 08/11] contrib: cc-cmd: add option to fetch aliases Message-ID: <1366399831-5964-9-git-send-email-felipe.contreras@gmail.com> In-Reply-To: <1366399831-5964-1-git-send-email-felipe.contreras@gmail.com> Only the mutt format is supported for now. Signed-off-by: Felipe Contreras --- contrib/cc-cmd/git-cc-cmd | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/contrib/cc-cmd/git-cc-cmd b/contrib/cc-cmd/git-cc-cmd index 4fad030..200da0d 100755 --- a/contrib/cc-cmd/git-cc-cmd +++ b/contrib/cc-cmd/git-cc-cmd @@ -7,6 +7,8 @@ $min_percent = 5 $show_commits = false $files = [] $rev_args = [] +$get_aliases = false +$aliases = {} begin OptionParser.new do |opts| @@ -22,11 +24,32 @@ begin opts.on('-c', '--commits[=FORMAT]', [:raw, :full], 'List commits instead of persons') do |v| $show_commits = v || true end + opts.on('-a', '--aliases', 'Use aliases') do |v| + $get_aliases = v + end end.parse! rescue OptionParser::InvalidOption => e $rev_args += e.args end +def get_aliases + type = %x[git config sendemail.aliasfiletype].chomp + return if type != 'mutt' + file = %x[git config sendemail.aliasesfile].chomp + File.open(File.expand_path(file)) do |f| + f.each do |line| + if line =~ /^\s*alias\s+(?:-group\s+\S+\s+)*(\S+)\s+(.*)$/ + key, addresses = $1, $2.split(', ') + addresses.each do |address| + $aliases[address] = key + end + end + end + end +end + +get_aliases if $get_aliases + class Commit attr_reader :id, :roles @@ -56,6 +79,8 @@ class Commit end end @roles = roles.map do |person, role| + address = "%s <%s>" % person + person = nil, $aliases[address] if $aliases.include?(address) [person, role] end end -- 1.8.2.1.790.g4588561