bin/drydock
#!/usr/bin/env ruby
require 'drydock'
opts = Drydock::RuntimeOptions.parse!(ARGV)
STDOUT.sync = true
Drydock.logger = Drydock::Logger.new(STDOUT).tap do |l|
l.level = opts.log_level
l.formatter = Drydock::Formatter.new
end
build_opts = {}
build_opts[:event_handler] = proc do |event, is_new, _serial, event_type|
long_id = event.id.to_s
short_id =
if long_id.include?(':') || long_id.include?('/')
long_id
else
long_id.slice(0, 12)
end
if is_new
Drydock.logger.info(message: "#{event_type.to_s.capitalize} #{short_id} #{event.status}")
else
Drydock.logger.debug(message: "#{event_type.to_s.capitalize} #{short_id} #{event.status}")
end
end
build_opts[:cache] = Drydock::ObjectCaches::FilesystemCache.new if opts.cache
Drydock.build(build_opts) do |_project|
Drydock.logger.info Drydock.banner
filename = ARGV.first || 'Drydockfile'
filename = "#{filename}/Drydockfile" if File.directory?(filename)
unless File.exist?(filename)
Drydock.logger.error "Cannot find file #{filename} in #{Dir.pwd}"
exit 1
end
contents = File.read(filename)
Drydock.logger.info "Loaded #{contents.length} bytes from #{filename}"
[contents, filename]
end