Class: Fig::Environment
- Inherits:
-
Object
- Object
- Fig::Environment
- Defined in:
- lib/fig/environment.rb
Overview
This class manages the program’s state, including the value of all environment variables, and which packages have already been applied
Constant Summary collapse
- DEFAULT_VERSION_NAME =
"current"
Instance Method Summary collapse
-
#[](name) ⇒ Object
Returns the value of an envirionment variable.
-
#add_retrieve(name, path) ⇒ Object
Indicates that the values from a particular envrionment variable path should be copied to a local directory.
- #apply_config(package, config_name) ⇒ Object
- #apply_config_statement(base_package, statement) ⇒ Object
- #execute_config(base_package, package_name, config_name, version_name) ⇒ Object
- #execute_shell(command) ⇒ Object
-
#initialize(os, repository, variables) ⇒ Environment
constructor
A new instance of Environment.
- #register_package(package) ⇒ Object
Constructor Details
#initialize(os, repository, variables) ⇒ Environment
Returns a new instance of Environment.
8 9 10 11 12 13 14 |
# File 'lib/fig/environment.rb', line 8 def initialize(os, repository, variables) @os = os @repository = repository @variables = variables @retrieve_vars = {} @packages = {} end |
Instance Method Details
#[](name) ⇒ Object
Returns the value of an envirionment variable
17 18 19 |
# File 'lib/fig/environment.rb', line 17 def [](name) @variables[name] end |
#add_retrieve(name, path) ⇒ Object
Indicates that the values from a particular envrionment variable path should be copied to a local directory
23 24 25 |
# File 'lib/fig/environment.rb', line 23 def add_retrieve(name, path) @retrieve_vars[name] = path end |
#apply_config(package, config_name) ⇒ Object
33 34 35 36 |
# File 'lib/fig/environment.rb', line 33 def apply_config(package, config_name) config = package[config_name] config.statements.each { |stmt| apply_config_statement(package, stmt) } end |
#apply_config_statement(base_package, statement) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/fig/environment.rb', line 57 def apply_config_statement(base_package, statement) case statement when Path append_variable(base_package, statement.name, statement.value) when Set set_variable(base_package, statement.name, statement.value) when Include include_config(base_package, statement.package_name, statement.config_name, statement.version_name) when Command # ignore else fail "Unexpected statement: #{statement}" end end |
#execute_config(base_package, package_name, config_name, version_name) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/fig/environment.rb', line 44 def execute_config(base_package, package_name, config_name, version_name) package = lookup_package(package_name || base_package.package_name, version_name) result = nil commands = package[config_name || "default"].commands with_environment do # todo nil check commands.each do |command| result = yield (command.command).gsub("@",package.directory).split(" ") end end result end |
#execute_shell(command) ⇒ Object
38 39 40 41 42 |
# File 'lib/fig/environment.rb', line 38 def execute_shell(command) with_environment do yield command.map{|arg| (arg)} end end |
#register_package(package) ⇒ Object
27 28 29 30 31 |
# File 'lib/fig/environment.rb', line 27 def register_package(package) name = package.package_name raise "Package already exists with name: #{name}" if @packages[name] @packages[name] = package end |