class Hub::Context::GitReader

Shells out to git to get output of its commands

Shells out to git to get output of its commands

Attributes

executable[R]

Public Class Methods

new(executable = nil, &read_proc) click to toggle source
# File lib/hub/context.rb, line 17
def initialize(executable = nil, &read_proc)
  @executable = executable || 'git'
  # caches output when shelling out to git
  read_proc ||= lambda { |cache, cmd|
    str = command_to_string(cmd)
    result = silence_stderr { %x{#{str}}.chomp }
    cache[cmd] = $?.success? && !result.empty? ? result : nil
  }
  @cache = Hash.new(&read_proc)
end

Public Instance Methods

add_exec_flags(flags) click to toggle source
# File lib/hub/context.rb, line 28
def add_exec_flags(flags)
  @executable = Array(executable).concat(flags)
end
read(cmd) click to toggle source
# File lib/hub/context.rb, line 38
def read(cmd)
  @cache[cmd]
end
read_config(cmd, all = false) click to toggle source
# File lib/hub/context.rb, line 32
def read_config(cmd, all = false)
  config_cmd = ['config', (all ? '--get-all' : '--get'), *cmd]
  config_cmd = config_cmd.join(' ') unless cmd.respond_to? :join
  read config_cmd
end
stub!(values) click to toggle source
# File lib/hub/context.rb, line 50
def stub!(values)
  @cache.update values
end
stub_command_output(cmd, value) click to toggle source
# File lib/hub/context.rb, line 46
def stub_command_output(cmd, value)
  @cache[cmd] = value.nil? ? nil : value.to_s
end
stub_config_value(key, value, get = '--get') click to toggle source
# File lib/hub/context.rb, line 42
def stub_config_value(key, value, get = '--get')
  stub_command_output "config #{get} #{key}", value
end