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

Instance Method Summary collapse

Constructor Details

#initialize(env = ENV) ⇒ UnixEnvironmentVariables

Returns a new instance of UnixEnvironmentVariables.



60
61
62
63
64
65
66
67
68
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 60

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

  @env = if RUBY_VERSION < '2.0'
           env.to_hash
         else
           env.to_h
         end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object

Pass on checks



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

def method_missing(name, *args, &block)
  super unless to_h.respond_to? name

  to_h.send name, *args, &block
end

Instance Method Details

#[](name) ⇒ Object

Get value of variable

Parameters:

  • name (#to_s)

    The name of the variable



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

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



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

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

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

  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



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

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



199
200
201
202
203
204
205
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 199

def clear
  value = to_h

  actions.clear

  value
end

#delete(name) ⇒ Object

Delete variable

Parameters:

  • name (#to_s)

    The name of the variable



165
166
167
168
169
170
171
172
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 165

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



90
91
92
93
94
95
96
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 90

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)


102
103
104
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 102

def key?(name)
  to_h.key? name.to_s
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



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

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)


182
183
184
# File 'lib/aruba/platforms/unix_environment_variables.rb', line 182

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

#to_hHash

Convert to hash

Returns:

  • (Hash)

    A new hash from environment



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

def to_h
  if RUBY_VERSION < '2.0'
    Marshal.load(Marshal.dump(prepared_environment.to_hash))
  else
    Marshal.load(Marshal.dump(prepared_environment.to_h))
  end
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



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

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

  UnixEnvironmentVariables.new(to_h)
end