1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Encoding.default_external = Encoding::UTF_8
require 'shellwords'
require 'debci/config'
require 'debci/reject_list'
require 'debci/extra_apt_sources_list'
module Debci
class CommandFailed < RuntimeError
end
class << self
def config
@config ||= Debci::Config.new
end
def reject_list
@reject_list ||= Debci::RejectList.new
end
def extra_apt_sources_list
@extra_apt_sources_list ||= Debci::ExtraAptSourcesList.new(File.join(Debci.config.config_dir, 'extra_apt_sources_list.yaml'))
end
def config!(data)
data.each do |k, v|
ENV["debci_#{k}"] = v
end
@config = nil
@reject_list = nil
@extra_apt_sources_list = nil
end
def log(*str)
return if config.quiet
puts(*str)
$stdout.flush
end
def warn(*str)
$stderr.puts(*str)
end
def run(*argv)
system(*argv)
return if $?.exitstatus == 0
cmdline = argv.map { |s| Shellwords.shellescape(s) }.join(' ')
raise Debci::CommandFailed.new(cmdline)
end
end
end
|