class Fig::Command::PackageApplier

Attributes

synthetic_package_for_command_line[R]

Public Class Methods

new( base_package, environment, options, descriptor, base_config, package_source_description ) click to toggle source
# File lib/fig/command/package_applier.rb, line 12
def initialize(
  base_package,
  environment,
  options,
  descriptor,
  base_config,
  package_source_description
)
  @base_package                 = base_package
  @environment                  = environment
  @options                      = options
  @descriptor                   = descriptor
  @base_config                  = base_config
  @package_source_description   = package_source_description
end

Public Instance Methods

activate_retrieves() click to toggle source
# File lib/fig/command/package_applier.rb, line 28
def activate_retrieves()
  @base_package.retrieves.each do |statement|
    @environment.add_retrieve(statement)
  end

  return
end
apply_config_to_environment(ignore_base_config) click to toggle source
# File lib/fig/command/package_applier.rb, line 42
def apply_config_to_environment(ignore_base_config)
  begin
    @synthetic_package_for_command_line =
      synthesize_package_for_command_line_options(ignore_base_config)
    @environment.apply_config(
      @synthetic_package_for_command_line, Fig::Package::DEFAULT_CONFIG, nil
    )
  rescue Fig::NoSuchPackageConfigError => exception
    make_no_such_package_exception_descriptive(exception)
  end

  return
end
register_package_with_environment() click to toggle source
# File lib/fig/command/package_applier.rb, line 36
def register_package_with_environment()
  @environment.register_package(@base_package)

  return
end

Private Instance Methods

append_config_names(message, config_names) click to toggle source
# File lib/fig/command/package_applier.rb, line 146
def append_config_names(message, config_names)
  if config_names.size > 1
    message +=
      %Q< The valid configs are "#{config_names.join('", "')}".>
  elsif config_names.size == 1
    message += %Q< The only config is "#{config_names[0]}".>
  else
    message += ' Actually, there are no configs.'
  end

  return
end
check_no_such_package_exception_is_for_command_line_package(exception) click to toggle source
# File lib/fig/command/package_applier.rb, line 159
def check_no_such_package_exception_is_for_command_line_package(exception)
  descriptor = exception.descriptor

  raise exception if
    descriptor.name    && descriptor.name    != @descriptor.name
  raise exception if
    descriptor.version && descriptor.version != @descriptor.version
  raise exception if      descriptor.config  != @base_config

  return
end
config_was_specified_by_user() click to toggle source
# File lib/fig/command/package_applier.rb, line 58
def config_was_specified_by_user()
  return ! @options.config().nil?                   ||
         @descriptor && ! @descriptor.config().nil?
end
derive_exception_source() click to toggle source
# File lib/fig/command/package_applier.rb, line 171
def derive_exception_source()
  source = @package_source_description

  return source ? %Q< in #{source}> : ''
end
make_no_such_package_exception_descriptive(exception) click to toggle source
# File lib/fig/command/package_applier.rb, line 104
def make_no_such_package_exception_descriptive(exception)
  if not @descriptor
    make_no_such_package_exception_descriptive_without_descriptor(exception)
  end

  check_no_such_package_exception_is_for_command_line_package(exception)
  source = derive_exception_source()

  message = %Q<There's no "#{@base_config}" config#{source}.>
  config_names = exception.package.config_names
  if config_names.empty?
    message += ' Actually, there are no configs.'
  else
    example_config =
      config_names.size == 1 ? config_names[0] : 'some_existing_config'
    message += %q< Specify one that does like this: ">
    message += Fig::PackageDescriptor.format(
      @descriptor.name, @descriptor.version, example_config,
    )
    message += %q<".>

    if config_names.size > 1
      message +=
        %Q< The valid configs are "#{config_names.join('", "')}".>
    end
  end

  raise Fig::UserInputError.new(message)
end
make_no_such_package_exception_descriptive_without_descriptor(exception) click to toggle source
# File lib/fig/command/package_applier.rb, line 134
def make_no_such_package_exception_descriptive_without_descriptor(exception)
  raise exception if config_was_specified_by_user()
  raise exception if not exception.descriptor.nil?

  source = derive_exception_source()
  message =
    %Q<No config was specified and there's no "#{Fig::Package::DEFAULT_CONFIG}" config#{source}.>
  append_config_names message, @base_package.config_names()

  raise Fig::UserInputError.new(message)
end
synthesize_package_for_command_line_options(ignore_base_config) click to toggle source
# File lib/fig/command/package_applier.rb, line 63
def synthesize_package_for_command_line_options(ignore_base_config)
  configuration_statements = []

  if not ignore_base_config
    configuration_statements << Fig::Statement::Include.new(
      nil,
      %Q<[synthetic statement created in #{__FILE__} line #{__LINE__}]>,
      Fig::PackageDescriptor.new(
        @base_package.name(),
        @base_package.version(),
        @base_config,
        :file_path => @base_package.file_path,
        :description => @base_package.description
      ),
      @base_package,
      nil
    )
  end

  configuration_statements << @options.environment_statements()

  configuration_statement =
    Fig::Statement::Configuration.new(
      nil,
      %Q<[synthetic statement created in #{__FILE__} line #{__LINE__}]>,
      Fig::Package::DEFAULT_CONFIG,
      configuration_statements.flatten()
    )

  return Fig::Package.new(
    nil,  # Name
    nil,  # Version
    nil,  # File path
    'command-line',
    '.',  # Working
    '.',  # Base
    [configuration_statement],
    :is_synthetic
  )
end