From 997e2762f571e7dab52b27157fe1cf8fab4c4bf0 Mon Sep 17 00:00:00 2001 From: Dennis Boeckmann Date: Thu, 15 Aug 2013 13:45:12 +0200 Subject: [PATCH 1/3] Changed hightlight gem to thor. --- git_stats.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git_stats.gemspec b/git_stats.gemspec index 1de892edf..237dfd786 100644 --- a/git_stats.gemspec +++ b/git_stats.gemspec @@ -25,5 +25,5 @@ Gem::Specification.new do |gem| gem.add_dependency('haml') gem.add_dependency('lazy_high_charts') gem.add_dependency('i18n') - gem.add_dependency('highline') + gem.add_dependency('thor') end From 49c6d54355c86177a5feed8f4ec50e0602cb6a05 Mon Sep 17 00:00:00 2001 From: Dennis Boeckmann Date: Thu, 15 Aug 2013 22:02:25 +0200 Subject: [PATCH 2/3] Modified the cli to base on thor gem. --- bin/git_stats | 3 +-- lib/git_stats/cli.rb | 31 +++++++++++-------------------- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/bin/git_stats b/bin/git_stats index aea13ad69..6d740ee5d 100755 --- a/bin/git_stats +++ b/bin/git_stats @@ -7,5 +7,4 @@ $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib) # start up the CLI require "git_stats/cli" -cli = GitStats::CLI.new -cli.start +GitStats::CLI.start(ARGV) diff --git a/lib/git_stats/cli.rb b/lib/git_stats/cli.rb index 90a5aa2cc..7a0941516 100644 --- a/lib/git_stats/cli.rb +++ b/lib/git_stats/cli.rb @@ -1,27 +1,18 @@ # -*- encoding : utf-8 -*- require "git_stats" -require "highline/import" +require "thor" -class GitStats::CLI +class GitStats::CLI < Thor + option :path, :aliases => :p, :default => '.', :desc => 'Path to repository from which statistics should be generated.' + option :output, :aliases => :o, :default => './git_stats', :desc => 'Output path where statistics should be written.' + option :language, :aliases => :l, :default => 'en', :desc => 'Language of written statistics.' + option :from, :aliases => :f, :desc => 'Commit from where statistics should start.' + option :to, :aliases => :t, :default => 'HEAD', :desc => 'Commit where statistics should stop.' - def start - - repo_path = ask("Repo path? ") { |q| - q.default = "." - q.validate = lambda { |p| GitStats::Validator.new.valid_repo_path?(p) } - q.responses[:not_valid] = "Given path is not a git repository, try again" - } - - out_path = ask("Output dir? ") { |q| q.default = "./git_stats" } - I18n.locale = ask("Language? ") { |q| q.default = "en"; q.answer_type = Symbol } - specify_range = agree("Want to specify commits range? ") { |q| q.default = "no" } - - if specify_range - first_commit_sha = ask("Starting commit sha? ") { |q| q.default = nil } - last_commit_sha = ask("Ending commit sha? ") { |q| q.default = "HEAD" } - end - - GitStats::Generator.new(repo_path, out_path, first_commit_sha, last_commit_sha) { |g| + desc 'generate', 'Generates the statistics of a repository' + def generate + I18n.locale = options[:language] + GitStats::Generator.new(options[:path], options[:output], options[:from], options[:to]) { |g| g.add_command_observer { |command, result| puts "#{command}" } }.render_all end From 9811f099908a5f71c3b0a16dad1cdf1541fb9f81 Mon Sep 17 00:00:00 2001 From: Dennis Boeckmann Date: Thu, 15 Aug 2013 22:17:36 +0200 Subject: [PATCH 3/3] Adjusted readme with some usage examples. --- README.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a42f9229..442f38f9a 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,43 @@ It browses the repository and outputs html page with statistics. ### Generator +#### Print help + $ git_stats - + Commands: + git_stats generate # Generates the statistics of a repository + git_stats help [COMMAND] # Describe available commands or one specific command + +#### Print help of the generate command + + $ git_stats help generate + Usage: + git_stats generate + + Options: + p, [--path=PATH] # Path to repository from which statistics should be generated. + # Default: . + o, [--output=OUTPUT] # Output path where statistics should be written. + # Default: ./git_stats + l, [--language=LANGUAGE] # Language of written statistics. + # Default: en + f, [--from=FROM] # Commit from where statistics should start. + t, [--to=TO] # Commit where statistics should stop. + # Default: HEAD + +#### Start generator with default settings + + $ git_stats generate + git rev-list --pretty=format:'%h|%at|%ai|%aE' HEAD | grep -v commit + git shortlog -se HEAD + ... + +#### Start generator with some parameters in long and short form. + + $ git_stats generate -o stats --langugage de + git rev-list --pretty=format:'%h|%at|%ai|%aE' HEAD | grep -v commit + git shortlog -se HEAD + ... ### API usage example