Class: Bolt::Config::Transport::Base
- Inherits:
-
Object
- Object
- Bolt::Config::Transport::Base
show all
- Includes:
- Options
- Defined in:
- lib/bolt/config/transport/base.rb
Constant Summary
Constants included
from Options
Options::LOGIN_SHELLS, Options::RUN_AS_OPTIONS, Options::TRANSPORT_OPTIONS
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(data = {}, project = nil) ⇒ Base
Returns a new instance of Base.
16
17
18
19
20
21
22
23
24
|
# File 'lib/bolt/config/transport/base.rb', line 16
def initialize(data = {}, project = nil)
assert_hash_or_config(data)
@input = data
@resolved = !Bolt::Util.references?(input)
@config = resolved? ? Bolt::Util.deep_merge(defaults, filter(input)) : defaults
@project = project
validate if resolved?
end
|
Instance Attribute Details
Returns the value of attribute input.
14
15
16
|
# File 'lib/bolt/config/transport/base.rb', line 14
def input
@input
end
|
Class Method Details
.options ⇒ Object
86
87
88
89
90
91
92
|
# File 'lib/bolt/config/transport/base.rb', line 86
def self.options
unless defined? self::OPTIONS
raise NotImplementedError,
"Constant OPTIONS must be implemented by the transport config class"
end
self::OPTIONS
end
|
.schema ⇒ Object
94
95
96
97
98
99
100
|
# File 'lib/bolt/config/transport/base.rb', line 94
def self.schema
{
type: Hash,
properties: self::TRANSPORT_OPTIONS.slice(*self::OPTIONS),
_plugin: true
}
end
|
Instance Method Details
#[](key) ⇒ Object
Accessor methods These are mostly all wrappers for same-named Hash methods, but they all require that the config options be fully-resolved before accessing data
29
30
31
|
# File 'lib/bolt/config/transport/base.rb', line 29
def [](key)
resolved_config[key]
end
|
#dig(*keys) ⇒ Object
45
46
47
|
# File 'lib/bolt/config/transport/base.rb', line 45
def dig(*keys)
resolved_config.dig(*keys)
end
|
#fetch(*args) ⇒ Object
37
38
39
|
# File 'lib/bolt/config/transport/base.rb', line 37
def fetch(*args)
resolved_config.fetch(*args)
end
|
#include?(args) ⇒ Boolean
41
42
43
|
# File 'lib/bolt/config/transport/base.rb', line 41
def include?(args)
resolved_config.include?(args)
end
|
#merge(*data) ⇒ Object
Merges the original input data with the provided data, which is either a hash or transport config object. Accepts multiple inputs.
62
63
64
65
66
67
68
69
70
|
# File 'lib/bolt/config/transport/base.rb', line 62
def merge(*data)
merged = data.compact.inject(@input) do |acc, layer|
assert_hash_or_config(layer)
layer_data = layer.is_a?(self.class) ? layer.input : layer
Bolt::Util.deep_merge(acc, layer_data)
end
self.class.new(merged, @project)
end
|
#resolve(plugins) ⇒ Object
Resolve any references in the input data, then remerge it with the defaults and validate all values
74
75
76
77
78
79
80
|
# File 'lib/bolt/config/transport/base.rb', line 74
def resolve(plugins)
@input = plugins.resolve_references(input)
@config = Bolt::Util.deep_merge(defaults, filter(input))
@resolved = true
validate
end
|
#resolved? ⇒ Boolean
82
83
84
|
# File 'lib/bolt/config/transport/base.rb', line 82
def resolved?
@resolved
end
|
#to_h ⇒ Object
33
34
35
|
# File 'lib/bolt/config/transport/base.rb', line 33
def to_h
resolved_config
end
|