class Buildkite::Builder::ExtensionManager

Public Class Methods

new(context) click to toggle source
# File lib/buildkite/builder/extension_manager.rb, line 7
def initialize(context)
  @context = context
  @extensions = []

  @loader = Loaders::Extensions.load(@context.root)
end

Public Instance Methods

build() click to toggle source
# File lib/buildkite/builder/extension_manager.rb, line 23
def build
  @extensions.each do |extension|
    log_build(extension.class.name) { extension.build }
  end
end
use(extension, native: false, **args) click to toggle source
# File lib/buildkite/builder/extension_manager.rb, line 14
def use(extension, native: false, **args)
  unless extension < Buildkite::Builder::Extension
    raise "#{extension} must subclass Buildkite::Builder::Extension"
  end

  @extensions.push(extension.new(@context, **args))
  @context.dsl.extend(extension)
end

Private Instance Methods

log() click to toggle source
# File lib/buildkite/builder/extension_manager.rb, line 31
def log
  @context.logger
end
log_build(name) { || ... } click to toggle source
# File lib/buildkite/builder/extension_manager.rb, line 35
def log_build(name)
  log.info "\nProcessing ".color(:dimgray) + name.color(:springgreen)

  results = benchmark('└──'.color(:springgreen) + ' Finished in %s'.color(:dimgray)) do
    formatter = log.formatter
    log.formatter = proc do |_severity, _datetime, _progname, msg|
      '│'.color(:springgreen) + " #{msg}\n"
    end

    begin
      yield
    ensure
      log.formatter = formatter
    end
  end

  log.info results
end