class March::Audit

Public Class Methods

age(repo, interactive, destructive) click to toggle source
# File lib/march/audit.rb, line 37
def self.age(repo, interactive, destructive)
  puts 'Auditing old branches...'
  msgs = repo.branch_age.each_with_object({}) do |(name, dates), acc|
    created = ChronicDuration.output(Time.now - dates[:oldest], weeks: true, units: 2)
    updated = ChronicDuration.output(Time.now - dates[:newest], weeks: true, units: 2)
    time_diff = (ENV['MAX_AGE'].to_i * 3600 * 24 || 3600 * 24 * 14)
    if (Time.now - dates[:newest]) > time_diff
      acc[name] = "Branch #{name} was created #{created} ago and updated #{updated} ago and is probably owned by #{repo.branch_owners[name].join(', ')}"
    end
  end

  puts 'No old branches' if msgs.empty?
  return if msgs.empty?

  msgs.each { |_name, msg| puts msg }

  old_branches = msgs.map(&:first)

  if interactive && destructive
    print 'Delete old branches? (y/N) '
    delete = $stdin.gets

    case delete.chomp
    when 'y' then repo.delete_branches(old_branches)
    else puts 'Canceled action'
    end
  elsif destructive
    repo.delete_branches(old_branches)
  else
    puts 'Taking no action (destructive is disabled)'
  end
end
complete(namespace, repository, interactive, destructive) click to toggle source
# File lib/march/audit.rb, line 5
def self.complete(namespace, repository, interactive, destructive)
  repo = March::Repo.new(namespace, repository)

  merged(repo, interactive, destructive)
  puts
  age(repo, interactive, destructive)
end
merged(repo, interactive, destructive) click to toggle source
# File lib/march/audit.rb, line 13
def self.merged(repo, interactive, destructive)
  puts 'Auditing merged branches...'

  puts 'No merged branches.' if repo.merged_branches.empty?
  return                     if repo.merged_branches.empty?

  print 'These branches have been merged: '
  puts repo.merged_branches.join(', ')

  if interactive && destructive
    print 'Delete merged branches? (y/N) '
    bool = $stdin.gets

    case bool.chomp
    when 'y' then repo.delete_branches(repo.merged_branches)
    else puts 'Canceled action'
    end
  elsif destructive
    repo.delete_branches(repo.merged_branches)
  else
    puts 'Taking no action (destructive is disabled)'
  end
end