class RubyFly::RC
Public Class Methods
load(options)
click to toggle source
# 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
new(options)
click to toggle source
# 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
Public Instance Methods
add_or_update_target(target_name, &block)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/ruby_fly/rc.rb, line 156 def has_target?(target_name) @targets.has_key?(target_name) end
remove_target(target_name)
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# File lib/ruby_fly/rc.rb, line 148 def targets @targets.values end
to_yaml()
click to toggle source
# 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)
click to toggle source
# 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!()
click to toggle source
# 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