class MGit::StatusCommand

Public Instance Methods

arity() click to toggle source
# File lib/mgit/commands/status.rb, line 11
def arity
  [nil, 0]
end
description() click to toggle source
# File lib/mgit/commands/status.rb, line 19
def description
  'display status for each repository'
end
execute(_) click to toggle source
# File lib/mgit/commands/status.rb, line 5
def execute(_)
  t = []
  Registry.chdir_each { |repo| t << [repo.name, repo.current_branch, decorate_flags(repo)] }
  ptable t, columns: [24, nil, nil]
end
usage() click to toggle source
# File lib/mgit/commands/status.rb, line 15
def usage
  'status'
end

Private Instance Methods

decorate_divergence_flags(divergence) click to toggle source
# File lib/mgit/commands/status.rb, line 42
def decorate_divergence_flags(divergence)
  divergence.map do |d|
    d.map do |k, v|
      "#{k.to_s.capitalize} of #{v[:branch]} by #{v[:by]}".blue
    end
  end
end
decorate_flags(repo) click to toggle source
# File lib/mgit/commands/status.rb, line 28
def decorate_flags(repo)
  flags = repo.flags
  labels = decorate_simple_flags(flags)
  labels.concat(decorate_divergence_flags(repo.divergence)) if flags.include?(:diverged)
  labels = ['Clean'.green] if labels.empty?
  labels.to_a.join(', ')
end
decorate_simple_flags(flags) click to toggle source
# File lib/mgit/commands/status.rb, line 36
def decorate_simple_flags(flags)
  { index: :red, dirty: :red, untracked: :yellow, detached: :yellow }
    .select { |f, _| flags.include?(f) }
    .map { |f, c| f.to_s.capitalize.send(c) }
end