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