Class: Gizzard::UnwrapCommand

Inherits:
Command
  • Object
show all
Defined in:
lib/gizzard/commands.rb

Instance Attribute Summary

Attributes inherited from Command

#argv, #buffer, #command_options, #global_options, #job_injector, #manager

Instance Method Summary collapse

Methods inherited from Command

classify, #confirm!, #get_base_name, #help!, #initialize, make_job_injector, make_manager, #output, #require_tables, #require_template_options, run

Constructor Details

This class inherits a constructor from Gizzard::Command

Instance Method Details

#runObject



271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
# File 'lib/gizzard/commands.rb', line 271

def run
  shard_ids = argv
  help! "No shards specified" if shard_ids.empty?
  shard_ids.each do |shard_id_string|
    shard_id = ShardId.parse(shard_id_string)

    upward_links = manager.list_upward_links(shard_id)
    downward_links = manager.list_downward_links(shard_id)

    if upward_links.length == 0 or downward_links.length == 0
      STDERR.puts "Shard #{shard_id_string} must not be a root or leaf"
      next
    end

    upward_links.each do |uplink|
      downward_links.each do |downlink|
        manager.add_link(uplink.up_id, downlink.down_id, uplink.weight)
        new_link = LinkInfo.new(uplink.up_id, downlink.down_id, uplink.weight)
        manager.remove_link(uplink.up_id, uplink.down_id)
        manager.remove_link(downlink.up_id, downlink.down_id)
        output new_link.to_unix
      end
    end
    manager.delete_shard shard_id
  end
end