class Fig::Statement::Include

Dual role: “include :configname” incorporates one configuration into another; “include package” declares a dependency upon another package (with incorporation of the “default” configuration from that other package if no “:configname” is specified.

Attributes

containing_package_descriptor[R]
descriptor[R]
included_package[R]

Public Class Methods

new( line_column, source_description, descriptor, included_package, containing_package_descriptor ) click to toggle source
Calls superclass method Fig::Statement::new
# File lib/fig/statement/include.rb, line 23
def initialize(
  line_column,
  source_description,
  descriptor,
  included_package,  # For synthetic Package for command-line options.
  containing_package_descriptor
)
  super(line_column, source_description)

  @descriptor                    = descriptor
  @included_package              = included_package
  @containing_package_descriptor = containing_package_descriptor
end
parse_descriptor(raw_string, options = {}) click to toggle source

Centralized definition of requirements for descriptors for include statements.

# File lib/fig/statement/include.rb, line 19
def self.parse_descriptor(raw_string, options = {})
  return Fig::PackageDescriptor.parse(raw_string, options)
end

Public Instance Methods

complain_if_version_missing() click to toggle source
# File lib/fig/statement/include.rb, line 53
def complain_if_version_missing()
  if @descriptor.name && ! @descriptor.version
    message =
      %Q<No version in the package descriptor of "#{@descriptor.name}" in an include statement>
    if @containing_package_descriptor
      package_string = @containing_package_descriptor.to_string()
      if package_string && package_string != ''
        message += %Q< in the .fig file for "#{package_string}">
      end
    end
    message += %Q<#{position_string()}. Whether or not the include statement will work is dependent upon the recursive dependency load order.>

    Fig::Logging.warn(message)
  end
end
config_name() click to toggle source
# File lib/fig/statement/include.rb, line 49
def config_name
  return @descriptor.config
end
deparse_as_version(deparser) click to toggle source
# File lib/fig/statement/include.rb, line 80
def deparse_as_version(deparser)
  return deparser.include(self)
end
minimum_grammar_for_emitting_input() click to toggle source
# File lib/fig/statement/include.rb, line 84
def minimum_grammar_for_emitting_input()
  return minimum_grammar
end
minimum_grammar_for_publishing() click to toggle source
# File lib/fig/statement/include.rb, line 88
def minimum_grammar_for_publishing()
  return minimum_grammar
end
package_name() click to toggle source
# File lib/fig/statement/include.rb, line 41
def package_name
  return @descriptor.name
end
resolved_dependency_descriptor(containing_package, backtrace) click to toggle source

Assume that this statement is part of the parameter and return a descriptor that represents the fully resolved dependency, taking into account that the version might have been overridden.

# File lib/fig/statement/include.rb, line 72
def resolved_dependency_descriptor(containing_package, backtrace)
  return Fig::PackageDescriptor.new(
    referenced_package_name(containing_package),
    referenced_version(containing_package, backtrace),
    referenced_config_name()
  )
end
statement_type() click to toggle source
# File lib/fig/statement/include.rb, line 37
def statement_type()
  return 'include'
end
version() click to toggle source
# File lib/fig/statement/include.rb, line 45
def version
  return @descriptor.version
end

Private Instance Methods

minimum_grammar() click to toggle source
# File lib/fig/statement/include.rb, line 116
def minimum_grammar()
  if included_package
    raise 'Cannot deparse synthetic include statement with directly referenced package.'
  end

  return [0]
end
referenced_config_name() click to toggle source
# File lib/fig/statement/include.rb, line 112
def referenced_config_name()
  config_name() || Fig::Package::DEFAULT_CONFIG
end
referenced_package_name(containing_package) click to toggle source
# File lib/fig/statement/include.rb, line 94
def referenced_package_name(containing_package)
  return package_name() || containing_package.name()
end
referenced_version(containing_package, backtrace) click to toggle source
# File lib/fig/statement/include.rb, line 98
def referenced_version(containing_package, backtrace)
  package_name = nil
  original_version = nil
  if package_name()
    package_name = package_name()
    original_version = version()
  else
    package_name = containing_package.name()
    original_version = containing_package.version()
  end

  return backtrace.get_override(package_name, original_version)
end