Class: RubyFly::RC
- Inherits:
-
Object
show all
- Defined in:
- lib/ruby_fly/rc.rb
Defined Under Namespace
Modules: Conversions
Classes: Target, TargetAlreadyPresentError, TargetNotPresentError
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(options) ⇒ RC
Returns a new instance of RC.
129
130
131
132
133
134
135
|
# File 'lib/ruby_fly/rc.rb', line 129
def initialize(options)
@home = options[:home] || Dir.home
@name = options[:name] || '.flyrc'
@targets = options[:targets].inject({}) do |acc, target|
acc.merge(target.name => target)
end
end
|
Class Method Details
.load(options) ⇒ Object
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/ruby_fly/rc.rb', line 98
def self.load(options)
home = options[:home] || Dir.home
name = options[:name] || '.flyrc'
path = File.join(home, name)
contents = options[:contents] || try_load_rc_file_contents(path) || {}
targets = try_load_rc_file_targets(path, contents) || []
RubyFly::RC.new(home: home, name: name, targets: targets)
end
|
Instance Method Details
#add_or_update_target(target_name, &block) ⇒ Object
164
165
166
167
168
169
170
171
172
173
|
# File 'lib/ruby_fly/rc.rb', line 164
def add_or_update_target(target_name, &block)
mutable_target = if target?(target_name)
find_target(target_name)
else
Target.new({ name: target_name })
end
block.call(mutable_target)
updated_target = Target.clone(mutable_target, name: target_name)
@targets[target_name] = updated_target
end
|
#add_target(target) ⇒ Object
149
150
151
152
153
|
# File 'lib/ruby_fly/rc.rb', line 149
def add_target(target)
raise TargetAlreadyPresentError, target.name if target?(target.name)
@targets[target.name] = target
end
|
#find_target(target_name) ⇒ Object
145
146
147
|
# File 'lib/ruby_fly/rc.rb', line 145
def find_target(target_name)
Target.clone(@targets[target_name.to_sym])
end
|
#remove_target(target_name) ⇒ Object
182
183
184
185
186
|
# File 'lib/ruby_fly/rc.rb', line 182
def remove_target(target_name)
raise TargetNotPresentError, target_name unless target?(target_name)
@targets.delete(target_name)
end
|
#rename_target(old_target_name, new_target_name) ⇒ Object
175
176
177
178
179
180
|
# File 'lib/ruby_fly/rc.rb', line 175
def rename_target(old_target_name, new_target_name)
old_target = find_target(old_target_name)
new_target = Target.clone(old_target, name: new_target_name)
remove_target(old_target_name)
add_target(new_target)
end
|
#target?(target_name) ⇒ Boolean
141
142
143
|
# File 'lib/ruby_fly/rc.rb', line 141
def target?(target_name)
@targets.key?(target_name)
end
|
#targets ⇒ Object
137
138
139
|
# File 'lib/ruby_fly/rc.rb', line 137
def targets
@targets.values
end
|
#to_yaml ⇒ Object
188
189
190
191
192
|
# File 'lib/ruby_fly/rc.rb', line 188
def to_yaml
RubyFly::RC::Conversions
.stringify_keys({ targets: @targets })
.to_yaml
end
|
#update_target(target_name, &block) ⇒ Object
155
156
157
158
159
160
161
162
|
# File 'lib/ruby_fly/rc.rb', line 155
def update_target(target_name, &block)
raise TargetNotPresentError, target_name unless target?(target_name)
mutable_target = find_target(target_name)
block.call(mutable_target)
updated_target = Target.clone(mutable_target, name: target_name)
@targets[target_name] = updated_target
end
|
#write! ⇒ Object
194
195
196
197
|
# File 'lib/ruby_fly/rc.rb', line 194
def write!
FileUtils.mkdir_p(@home)
File.write(File.join(@home, @name), to_yaml)
end
|