class PrivateGemServer::Source
Constants
- SUBCLASSES
Attributes
name[R]
Public Class Methods
create(name, properties, sources)
click to toggle source
# File lib/private_gem_server/source.rb, line 15 def self.create(name, properties, sources) SUBCLASSES[properties['type'].to_sym].new name, properties, sources end
new(name, properties, sources)
click to toggle source
# File lib/private_gem_server/source.rb, line 19 def initialize(name, properties, sources) @name = name @properties = properties @sources = sources end
Public Instance Methods
refresh!()
click to toggle source
# File lib/private_gem_server/source.rb, line 25 def refresh! raise 'Not implemented' end
Protected Instance Methods
e(text)
click to toggle source
# File lib/private_gem_server/source.rb, line 55 def e(text) Shellwords.escape text end
logger()
click to toggle source
# File lib/private_gem_server/source.rb, line 31 def logger PrivateGemServer.logger end
run!(path, args: [], env: {}, cwd: nil, input: nil, output: nil, error: nil)
click to toggle source
# File lib/private_gem_server/source.rb, line 35 def run!(path, args: [], env: {}, cwd: nil, input: nil, output: nil, error: nil) cmd = ([path] + args.map { |arg| e arg }).join ' ' opts = {} opts[:chdir] = cwd.to_s if cwd env = env.map { |k, v| [k.to_s, v.to_s] }.to_h msg = env.map { |k, v| "#{e k}=#{e v}" } msg << "cd #{e cwd};" if cwd msg << cmd logger.debug msg.join(' ') Open3.popen3 env, cmd, opts do |i, o, e, t| i << input if input; i.close {o => output, e => error}.each do |source, target| result = source.read target << result if target source.close end t.value.exitstatus end end