Class: Fig::Environment

Inherits:
Object
  • Object
show all
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

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 expand_arg(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| expand_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