class Dodebui::Cli
commandline interface for dodebui
Attributes
apt_proxy[RW]
build_distributions[RW]
source_templates[RW]
wd[R]
Public Class Methods
logger()
click to toggle source
# File lib/dodebui/cli.rb, line 12 def self.logger @logger ||= Logger.new(STDOUT) end
new()
click to toggle source
# File lib/dodebui/cli.rb, line 16 def initialize @dodebuifiles ||= ['Dodebuifile'] @original_dir = Dir.getwd @distributions_sem = Mutex.new end
Public Instance Methods
build()
click to toggle source
# File lib/dodebui/cli.rb, line 129 def build threads = [] @distributions.each do |dist| threads << Thread.new do begin dist.build.build rescue => e logger.warn("Failed building on image '#{dist.image_name}': #{e}") @distributions_sem.synchronize do @distributions -= [dist] end end end end # wait for all threads threads.each(&:join) end
check_outcome()
click to toggle source
# File lib/dodebui/cli.rb, line 58 def check_outcome return if @distributions.length == build_distributions.length logger.error( "Only built #{@distributions.length} out of " \ "#{build_distributions.length}" ) exit 1 end
dodebuifile?()
click to toggle source
# File lib/dodebui/cli.rb, line 22 def dodebuifile? @dodebuifiles.each do |fn| return fn if File.exist?(fn) end nil end
ensure_images_updated()
click to toggle source
# File lib/dodebui/cli.rb, line 102 def ensure_images_updated # ensure images are up to date threads = [] @distributions.each do |dist| threads << Thread.new do begin dist.ensure_image_updated rescue => e logger.warn( "Failed ensuring a updated image '#{dist.image_name}': #{e}" ) @distributions_sem.synchronize do @distributions -= [dist] end end end end # wait for all threads threads.each(&:join) end
load_dodebiufile()
click to toggle source
# File lib/dodebui/cli.rb, line 41 def load_dodebiufile dodebuifile, location = find_dodebuifile_location fail 'No Dodebuifile found' if dodebuifile.nil? @dodebuifile = File.join(location, dodebuifile) @wd = location Cli.logger.info("Working directory #{@wd}") Cli.logger.info("Config file #{@dodebuifile}") load_dodebiufile_raw @dodebuifile end
load_dodebiufile_raw(path)
click to toggle source
# File lib/dodebui/cli.rb, line 51 def load_dodebiufile_raw(path) File.open(path, 'r') do |infile| code = infile.read eval(code) # rubocop:disable Lint/Eval end end
logger()
click to toggle source
# File lib/dodebui/cli.rb, line 91 def logger Cli.logger end
prepare_distributions(distributions = [])
click to toggle source
# File lib/dodebui/cli.rb, line 95 def prepare_distributions(distributions = []) @distributions = distributions.map do |name| Distribution.new(name, self) end ensure_images_updated end
prepare_sources()
click to toggle source
# File lib/dodebui/cli.rb, line 123 def prepare_sources @distributions.each do |dist| dist.build.source end end
run()
click to toggle source
# File lib/dodebui/cli.rb, line 67 def run Cli.logger.info("Initializing dodebui #{VERSION}") load_dodebiufile test_docker prepare_distributions build_distributions prepare_sources build check_outcome end
test_docker()
click to toggle source
# File lib/dodebui/cli.rb, line 83 def test_docker Docker.options[:read_timeout] = 3600 data = Docker.version Cli.logger.info( "Connecting to Docker server successful (version #{data['Version']})" ) end