Class: Aruba::Platforms::UnixEnvironmentVariables

Inherits:
Object
  • Object
show all
Defined in:
lib/aruba/platforms/unix_environment_variables.rb

Overview

Abstract environment variables

Direct Known Subclasses

WindowsEnvironmentVariables

Defined Under Namespace

Classes: RemoveAction, UpdateAction

Constant Summary collapse

UNDEFINED =

We need to use this, because ‘nil` is a valid value as default

Object.new.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env = ENV) ⇒ UnixEnvironmentVariables

Returns a new instance of UnixEnvironmentVariables.



52
53
54
55
56
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 52

def initialize(env = ENV)
  @actions = []

  @env = env.to_h
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name) ⇒ Object

Pass on checks



161
162
163
164
165
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 161

def method_missing(name, ...)
  super unless to_h.respond_to? name

  to_h.send(name, ...)
end

Class Method Details

.hash_from_envObject



196
197
198
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 196

def self.hash_from_env
  ENV.to_hash
end

Instance Method Details

#[](name) ⇒ Object

Get value of variable

Parameters:

  • name (#to_s)

    The name of the variable



98
99
100
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 98

def [](name)
  to_h[name.to_s]
end

#[]=(name, value) ⇒ Object

Set value of variable

Parameters:

  • name (#to_s)

    The name of the variable

  • value (#to_s)

    The value of the variable



109
110
111
112
113
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 109

def []=(name, value)
  value = value.to_s

  actions << UpdateAction.new(name.to_s => value)
end

#append(name, value) ⇒ Object

Append value to variable

Parameters:

  • name (#to_s)

    The name of the variable

  • value (#to_s)

    The value of the variable



122
123
124
125
126
127
128
129
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 122

def append(name, value)
  name  = name.to_s
  value = self[name].to_s + value.to_s

  actions << UpdateAction.new(name => value)

  value
end

#clearObject

Reset environment



181
182
183
184
185
186
187
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 181

def clear
  value = to_h

  actions.clear

  value
end

#delete(name) ⇒ Object

Delete variable

Parameters:

  • name (#to_s)

    The name of the variable



151
152
153
154
155
156
157
158
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 151

def delete(name)
  # Rescue value, before it is deleted
  value = to_h[name.to_s]

  actions << RemoveAction.new(name.to_s)

  value
end

#fetch(name, default = UNDEFINED) ⇒ Object

Fetch variable from environment

Parameters:

  • name (#to_s)

    The name of the variable

  • default (Object) (defaults to: UNDEFINED)

    The default value used, if the variable is not defined



78
79
80
81
82
83
84
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 78

def fetch(name, default = UNDEFINED)
  if default == UNDEFINED
    to_h.fetch name.to_s
  else
    to_h.fetch name.to_s, default
  end
end

#key?(name) ⇒ Boolean

Check if variable exist

Parameters:

  • name (#to_s)

    The name of the variable

Returns:

  • (Boolean)


90
91
92
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 90

def key?(name)
  to_h.key? name.to_s
end

#nestObject



189
190
191
192
193
194
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 189

def nest
  old_actions = @actions.dup
  yield(self)
ensure
  @actions = old_actions
end

#prepend(name, value) ⇒ Object

Prepend value to variable

Parameters:

  • name (#to_s)

    The name of the variable

  • value (#to_s)

    The value of the variable



138
139
140
141
142
143
144
145
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 138

def prepend(name, value)
  name  = name.to_s
  value = value.to_s + self[name].to_s

  actions << UpdateAction.new(name => value)

  value
end

#respond_to_missing?(name, _private) ⇒ Boolean

Check for respond_to

Returns:

  • (Boolean)


168
169
170
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 168

def respond_to_missing?(name, _private)
  to_h.respond_to? name
end

#to_hHash

Convert to hash

Returns:

  • (Hash)

    A new hash from environment



176
177
178
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 176

def to_h
  actions.inject(hash_from_env.merge(env)) { |a, e| e.call(a) }
end

#update(other_env) { ... } ⇒ Object

Update environment with other en

Parameters:

  • other_env (#to_hash, #to_h)

    Another environment object or hash

Yields:

  • Pass block to env



65
66
67
68
69
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 65

def update(other_env)
  actions << UpdateAction.new(other_env)

  self
end