ripta/drydock

View on GitHub
bin/drydock

Summary

Maintainability
Test Coverage
#!/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