Class: MultiGit::GitBackend::Cmd
- Inherits:
-
Object
- Object
- MultiGit::GitBackend::Cmd
- Defined in:
- lib/multi_git/git_backend/cmd.rb
Defined Under Namespace
Classes: Error
Constant Summary collapse
- READ_BLOCK =
lambda{|io| io.read }
Instance Method Summary collapse
- #call(*args, &block) ⇒ Object (also: #[])
- #call_env(env, *args, &block) ⇒ Object
-
#initialize(*args) ⇒ Cmd
constructor
A new instance of Cmd.
Constructor Details
#initialize(*args) ⇒ Cmd
Returns a new instance of Cmd.
23 24 25 26 27 28 29 30 31 |
# File 'lib/multi_git/git_backend/cmd.rb', line 23 def initialize(*args) if args.first.kind_of? Hash @env = args.shift else @env = {} end @cmd = args.shift @opts = args.any? ? args.shift.dup : {} end |
Instance Method Details
#call(*args, &block) ⇒ Object Also known as: []
58 59 60 |
# File 'lib/multi_git/git_backend/cmd.rb', line 58 def call(*args, &block) call_env({}, *args, &block) end |
#call_env(env, *args, &block) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/multi_git/git_backend/cmd.rb', line 37 def call_env(env, *args, &block) s = cmd(*args) block ||= READ_BLOCK result = nil = nil status = popen_foo(@env.merge(env), s.join(' ')) do | stdin, stdout, stderr | if block.arity == 1 stdin.close result = block.call(stdout) else result = block.call(stdin, stdout) end = stderr.read end if status.exitstatus == 0 return result else raise Error[status.exitstatus], .chomp end end |