Class: RubyFly::RC

Inherits:
Object
  • 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

Returns:

  • (Boolean)


141
142
143
# File 'lib/ruby_fly/rc.rb', line 141

def target?(target_name)
  @targets.key?(target_name)
end

#targetsObject



137
138
139
# File 'lib/ruby_fly/rc.rb', line 137

def targets
  @targets.values
end

#to_yamlObject



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