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.
140
141
142
143
144
145
146
|
# File 'lib/ruby_fly/rc.rb', line 140
def initialize(options)
@home = options[:home] || ENV['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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/ruby_fly/rc.rb', line 121
def self.load(options)
home = options[:home] || ENV['HOME']
name = options[:name] || '.flyrc'
path = File.join(home, name)
contents = options[:contents] ||
(File.exist?(path) ?
RubyFly::RC::Conversions.symbolize_keys(YAML.load_file(path)) :
{})
targets = File.exist?(path) ?
contents[:targets].map { |n, t| Target.new(t.merge(name: n)) } :
[]
RubyFly::RC.new(
home: home,
name: name,
targets: targets)
end
|
Instance Method Details
#add_or_update_target(target_name, &block) ⇒ Object
177
178
179
180
181
182
183
184
|
# File 'lib/ruby_fly/rc.rb', line 177
def add_or_update_target(target_name, &block)
mutable_target = has_target?(target_name) ?
find_target(target_name) :
Target.new({name: target_name})
block.call(mutable_target)
updated_target = Target.clone(mutable_target, name: target_name)
@targets[target_name] = updated_target
end
|
#add_target(target) ⇒ Object
160
161
162
163
164
165
|
# File 'lib/ruby_fly/rc.rb', line 160
def add_target(target)
if has_target?(target.name)
raise TargetAlreadyPresentError.new(target.name)
end
@targets[target.name] = target
end
|
#find_target(target_name) ⇒ Object
152
153
154
|
# File 'lib/ruby_fly/rc.rb', line 152
def find_target(target_name)
Target.clone(@targets[target_name.to_sym])
end
|
#has_target?(target_name) ⇒ Boolean
156
157
158
|
# File 'lib/ruby_fly/rc.rb', line 156
def has_target?(target_name)
@targets.has_key?(target_name)
end
|
#remove_target(target_name) ⇒ Object
193
194
195
196
197
198
|
# File 'lib/ruby_fly/rc.rb', line 193
def remove_target(target_name)
unless has_target?(target_name)
raise TargetNotPresentError.new(target_name)
end
@targets.delete(target_name)
end
|
#rename_target(old_target_name, new_target_name) ⇒ Object
186
187
188
189
190
191
|
# File 'lib/ruby_fly/rc.rb', line 186
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
|
#targets ⇒ Object
148
149
150
|
# File 'lib/ruby_fly/rc.rb', line 148
def targets
@targets.values
end
|
#to_yaml ⇒ Object
200
201
202
203
204
|
# File 'lib/ruby_fly/rc.rb', line 200
def to_yaml
RubyFly::RC::Conversions
.stringify_keys({targets: @targets})
.to_yaml
end
|
#update_target(target_name, &block) ⇒ Object
167
168
169
170
171
172
173
174
175
|
# File 'lib/ruby_fly/rc.rb', line 167
def update_target(target_name, &block)
unless has_target?(target_name)
raise TargetNotPresentError.new(target_name)
end
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
206
207
208
209
210
211
|
# File 'lib/ruby_fly/rc.rb', line 206
def write!
FileUtils.mkdir_p(@home)
File.open(File.join(@home, @name), 'w') do |file|
file.write(to_yaml)
end
end
|