lib/idonethis/use_cases/git.rb in idonethis-cli-0.6.0 vs lib/idonethis/use_cases/git.rb in idonethis-cli-0.7.0

- old
+ new

@@ -1,74 +1,74 @@ -module Idonethis::UseCases - module Git - class << self - def apply(credential, args={}) - log = args[:log] || fail("You need to supply :log adapter") - - log.call args - - opts = args[:opts] - - dir = opts.any? ? File.expand_path(opts.first) : File.expand_path(".") - - if opts.any? - all_dirs = directories_in(dir) - - log.call("All directories in <#{dir}>: #{all_dirs}") - - dirs_that_have_changed_today = all_dirs.select{|it| modified_today?(it, log) } - - puts "Scanning dir <#{dir}>, which has <#{dirs_that_have_changed_today.size}> repositories that have changed today\n\n" - - summarise *dirs_that_have_changed_today - - puts "" - else - puts "Scanning the current directory <#{dir}>\n\n" - summarise dir - end - end - - def summarise(*dirs) - dirs.each do |dir| - summary = commit_summary(dir) - puts %Q{#{Pathname.new(dir).basename} (#{summary.size}):\n-- #{summary.join("\n-- ")}} - end - end - - def directories_in(dir) - Dir.entries(dir). - reject{|it| ["..", "."].include?(it) }. - select{|it| File.directory?(File.join(dir, it))}. - map{ |it| File.expand_path(File.join(dir, it))} - end - - def modified_today?(dir, log) - time = File.ctime(dir) - now = Time.now - - any_file_changed_today?(dir, time, now, log).tap do |result| - log.call "[#{dir}] Comparing mtime <#{time}> to today <#{now}>. Today? <#{result}>" - end - end - - def any_file_changed_today?(dir, time, now, log) - Dir["#{dir}/**/**"].select do |file| - mtime = File.ctime(file) - log.call "File <#{file}> has mtime <#{mtime}>" - return true if today?(mtime, now) - end - return false - end - - def today?(time, now) - time.year == now.year && time.month == now.month && time.day == now.day - end - - def commit_summary(dir) - require 'git' - git = ::Git.open(dir) - git.log.since('1am').map{|it| %Q{[#{it.date.strftime("%H:%M")}] #{it.message}}} - end - end - end -end +module Idonethis::UseCases + module Git + class << self + def apply(credential, args={}) + log = args[:log] || fail("You need to supply :log adapter") + + log.call args + + opts = args[:opts] + + dir = opts.any? ? File.expand_path(opts.first) : File.expand_path(".") + + if opts.any? + all_dirs = directories_in(dir) + + log.call("All directories in <#{dir}>: #{all_dirs}") + + dirs_that_have_changed_today = all_dirs.select{|it| modified_today?(it, log) } + + puts "Scanning dir <#{dir}>, which has <#{dirs_that_have_changed_today.size}> repositories that have changed today\n\n" + + summarise *dirs_that_have_changed_today + + puts "" + else + puts "Scanning the current directory <#{dir}>\n\n" + summarise dir + end + end + + def summarise(*dirs) + dirs.each do |dir| + summary = commit_summary(dir) + puts %Q{#{Pathname.new(dir).basename} (#{summary.size}):\n-- #{summary.join("\n-- ")}} + end + end + + def directories_in(dir) + Dir.entries(dir). + reject{|it| ["..", "."].include?(it) }. + select{|it| File.directory?(File.join(dir, it))}. + map{ |it| File.expand_path(File.join(dir, it))} + end + + def modified_today?(dir, log) + time = File.ctime(dir) + now = Time.now + + any_file_changed_today?(dir, time, now, log).tap do |result| + log.call "[#{dir}] Comparing mtime <#{time}> to today <#{now}>. Today? <#{result}>" + end + end + + def any_file_changed_today?(dir, time, now, log) + Dir["#{dir}/**/**"].select do |file| + mtime = File.ctime(file) + log.call "File <#{file}> has mtime <#{mtime}>" + return true if today?(mtime, now) + end + return false + end + + def today?(time, now) + time.year == now.year && time.month == now.month && time.day == now.day + end + + def commit_summary(dir) + require 'git' + git = ::Git.open(dir) + git.log.since('1am').map{|it| %Q{[#{it.date.strftime("%H:%M")}] #{it.message}}} + end + end + end +end