class Fig::Package

The parsed representation of a configuration file for a specific version. Contains the statement objects.

Unique identifier for this object: name and version. A different version of the same package will be a separate instance of this class.

Constants

DEFAULT_CONFIG

Attributes

backtrace[RW]
description[R]
file_path[R]
include_file_base_directory[R]
name[R]
runtime_directory[R]
statements[R]
unparsed_text[RW]
version[R]

Public Class Methods

new( name, version, file_path, description, runtime_directory, include_file_base_directory, statements, synthetic ) click to toggle source
# File lib/fig/package.rb, line 35
def initialize(
  name,
  version,
  file_path,
  description,
  runtime_directory,
  include_file_base_directory,
  statements,
  synthetic
)
  @name                         = name
  @version                      = version
  @file_path                    = file_path
  @description                  = description
  @runtime_directory            = runtime_directory
  @include_file_base_directory  = include_file_base_directory
  @statements                   = statements
  @synthetic                    = synthetic
  @applied_config_names         = []
  @backtrace                    = nil
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/fig/package.rb, line 103
def <=>(other)
  return if not other

  compared = compare_components(name, other.name)
  return compared if compared != 0

  return compare_components(version, other.version)
end
[](config_name) click to toggle source
# File lib/fig/package.rb, line 75
def [](config_name)
  @statements.each do
    |statement|

    return statement if
          statement.is_a?(Fig::Statement::Configuration) \
      &&  statement.name == config_name
  end

  descriptor = Fig::PackageDescriptor.new(
    @name,
    @version,
    config_name,
    :file_path   => @file_path,
    :description => @description
  )
  config_description = nil
  if @name.nil? and @version.nil?
    config_description = config_name
  else
    config_description = descriptor.to_string(:use_default_config)
  end

  message = %Q<There is no "#{config_description}" config.>

  raise Fig::NoSuchPackageConfigError.new(message, descriptor, self)
end
add_applied_config_name(name) click to toggle source
# File lib/fig/package.rb, line 140
def add_applied_config_name(name)
  @applied_config_names << name
end
applied_config_names() click to toggle source
# File lib/fig/package.rb, line 136
def applied_config_names()
  return @applied_config_names.clone
end
archive_locations() click to toggle source
# File lib/fig/package.rb, line 124
def archive_locations
  return @statements.
    select{|s| s.is_a?(Fig::Statement::Archive)}.
    map{|s| s.location}
end
base?() click to toggle source

Is this the base package?

# File lib/fig/package.rb, line 65
def base?()
  return @base
end
config_names() click to toggle source
# File lib/fig/package.rb, line 116
def config_names
  return configs.collect { |statement| statement.name }
end
configs() click to toggle source
# File lib/fig/package.rb, line 112
def configs
  return @statements.select { |statement| statement.is_a?(Fig::Statement::Configuration) }
end
name_or_file_or_description() click to toggle source
# File lib/fig/package.rb, line 181
def name_or_file_or_description
  return @name if @name

  if @file_path
    return "[#{@file_path}]"
  end

  return @description
end
package_dependencies(config_name, backtrace) click to toggle source

Returns an array of PackageDescriptors

# File lib/fig/package.rb, line 149
def package_dependencies(config_name, backtrace)
  descriptors = []

  self[config_name || DEFAULT_CONFIG].walk_statements do
    |statement|

    if statement.is_a?(Fig::Statement::Include)
      descriptors << statement.resolved_dependency_descriptor(self, backtrace)
    elsif statement.is_a?(Fig::Statement::IncludeFile)
      full_path = statement.full_path_relative_to self

      descriptors << Fig::PackageDescriptor.new(
        nil, nil, nil, :file_path => full_path
      )
    elsif statement.is_a?(Fig::Statement::Override)
      backtrace.add_override(statement)
    end
  end

  return descriptors
end
primary_config_name() click to toggle source
# File lib/fig/package.rb, line 144
def primary_config_name()
  return @applied_config_names.first
end
resource_locations() click to toggle source
# File lib/fig/package.rb, line 130
def resource_locations
  return @statements.
    select{|s| s.is_a?(Fig::Statement::Resource)}.
    map{|s| s.location}
end
retrieves() click to toggle source
# File lib/fig/package.rb, line 120
def retrieves
  return @statements.select { |statement| statement.is_a?(Fig::Statement::Retrieve) }
end
set_base(yea_or_nay) click to toggle source
# File lib/fig/package.rb, line 69
def set_base(yea_or_nay)
  @base = yea_or_nay

  return
end
synthetic?() click to toggle source

Was this package (supposedly) created from something other than usual parsing? (Note that some tests artificially create “non-synthetic” instances.)

# File lib/fig/package.rb, line 60
def synthetic?
  return @synthetic
end
to_descriptive_string_with_config(config_name) click to toggle source

Useful for debugging; should not be used for regular output.

# File lib/fig/package.rb, line 205
def to_descriptive_string_with_config(config_name)
  return Fig::PackageDescriptor.format(
    name, version, config_name, :use_default_config, description
  )
end
to_s() click to toggle source
# File lib/fig/package.rb, line 191
def to_s
  name    = name_or_file_or_description
  version = @version || '<empty>'
  return Fig::PackageDescriptor.format(name, version, nil)
end
to_s_with_config(config_name) click to toggle source
# File lib/fig/package.rb, line 197
def to_s_with_config(config_name)
  displayed_config = config_name == DEFAULT_CONFIG ? nil : config_name
  return Fig::PackageDescriptor.format(
    name_or_file_or_description, version, displayed_config
  )
end
walk_statements() { |statement| ... } click to toggle source

Block will receive a Statement.

# File lib/fig/package.rb, line 172
def walk_statements(&block)
  @statements.each do |statement|
    yield statement
    statement.walk_statements(&block)
  end

  return
end

Private Instance Methods

compare_components(mine, others) click to toggle source
# File lib/fig/package.rb, line 214
def compare_components(mine, others)
  if mine.nil?
    if others.nil?
      return 0
    end

    return 1
  end

  if others.nil?
    return -1
  end

  return mine <=> others
end