class RBT::ReverseDependencies

Public Class Methods

[](i = ARGV) click to toggle source
#

RBT::ReverseDependencies[]

#
# File lib/rbt/misc/reverse_dependencies.rb, line 220
def self.[](i = ARGV)
  new(i)
end
dependencies?(i) click to toggle source
#

RBT::ReverseDependencies.dependencies?

#
# File lib/rbt/misc/reverse_dependencies.rb, line 227
def self.dependencies?(i)
  RBT::ReverseDependencies.new(i) { :be_quiet }.results?
end
new( work_on_these_programs = [ 'atk', 'glib', 'libjpeg', 'pango', 'tiff', 'libxft', 'cairo >= 1.6' ], run_already = true ) { || ... } click to toggle source
#

initialize

#
# File lib/rbt/misc/reverse_dependencies.rb, line 33
def initialize(
    work_on_these_programs = [
      'atk',
      'glib',
      'libjpeg',
      'pango',
      'tiff',
      'libxft',
      'cairo >= 1.6'
    ],
    run_already           = true
  )
  reset
  set_work_on_these_programs(
    work_on_these_programs
  )
  # ======================================================================= #
  # === Handle Blocks next
  # ======================================================================= #
  if block_given?
    yielded = yield
    case yielded
    when :be_quiet
      @be_verbose = false
    end
  end
  run if run_already
end

Public Instance Methods

add(i) click to toggle source
#

add (add tag)

#
# File lib/rbt/misc/reverse_dependencies.rb, line 109
def add(i)
  i = [i].flatten.compact.uniq
  i.each {|entry|
    if entry.include? ' '
      entry = entry.split(' ').first
    end
    unless @array_unique_dependencies.include? entry
      @array_unique_dependencies << entry
    end
  }
end
do_work_on_the_programs() click to toggle source
#

do_work_on_the_programs

#
# File lib/rbt/misc/reverse_dependencies.rb, line 158
def do_work_on_the_programs
  @work_on_these_programs.each {|this_program|
    this_program = this_program.split(' ').first if this_program.include? ' '
    entries = return_all_dependencies_of_this_program(this_program)
    if entries.size == 0
      e "#{rev}The program #{cadetblue(this_program)} has no "\
        "listed dependent programs."
    else
      e "#{rev}The program #{cadetblue(this_program)} depends "\
        "on these #{entries.size} programs:"
      ee '    '
      add(entries) # ← Add these dependencies to the unique deps.
      ee steelblue(entries.join(', ').strip)
    end
    e unless entries.empty?
    entries.each {|inner_this_program|
      _ = return_all_dependencies_of_this_program(inner_this_program)
      # =================================================================== #
      # Indent towards the right side once.
      # =================================================================== #
      if _.empty?
        ee "    No #{tomato('secondary dependencies')} "\
           "were found for #{mediumpurple(inner_this_program)}.\n"
      else
        ee "    And the #{tomato('secondary dependencies')} "\
           "of #{mediumpurple(inner_this_program)} are: "\
           "#{steelblue(_.join(', ').strip)}\n"
        add(_)
      end
    }
    e
  }
  report_the_unique_dependencies if @be_verbose
end
e(i = '') click to toggle source
#

e

#
# File lib/rbt/misc/reverse_dependencies.rb, line 144
def e(i = '')
  puts i if be_verbose?
end
ee(i = '') click to toggle source
#

ee

#
# File lib/rbt/misc/reverse_dependencies.rb, line 151
def ee(i = '')
  print i if be_verbose?
end
report_the_unique_dependencies() click to toggle source
#

report_the_unique_dependencies

#
# File lib/rbt/misc/reverse_dependencies.rb, line 196
def report_the_unique_dependencies
  e 'The unique dependencies are:'
  e
  pp @array_unique_dependencies
  e
end
reset() click to toggle source
#

reset (reset tag)

#
Calls superclass method RBT::LeanPrototype#reset
# File lib/rbt/misc/reverse_dependencies.rb, line 65
def reset
  super()
  # ======================================================================= #
  # === :be_verbose
  #
  # This should be true by default.
  # ======================================================================= #
  set_be_verbose
  # ======================================================================= #
  # === @array_unique_dependencies
  # ======================================================================= #
  @array_unique_dependencies = []
  # ======================================================================= #
  # === @hash
  # ======================================================================= #
  @hash = {}
  all_programs.each {|this_program|
    this_program.strip!
    if this_program.include? ' '
      this_program = this_program.split(' ').first
    end
    dataset = load_dataset_from_this_expanded_cookbook(this_program)
    @hash.update(
      { this_program.to_sym => dataset }
    )
  }
end
results?()
return_all_dependencies_of_this_program(this_program) click to toggle source
#

return_all_dependencies_of_this_program

This method can be used to return all dependencies of the given program at hand.

#
# File lib/rbt/misc/reverse_dependencies.rb, line 127
def return_all_dependencies_of_this_program(this_program)
  if this_program.include? ' '
    this_program = this_program.split(' ').first
  end
  this_program = this_program.to_sym
  if @hash.include? this_program 
    @hash[this_program]['required_deps_on']
  else
    e "\n"+
      tomato('The program ')+steelblue(this_program)+
      tomato(' is not included.')
  end
end
run() click to toggle source
#

run (run tag)

#
# File lib/rbt/misc/reverse_dependencies.rb, line 213
def run
  do_work_on_the_programs
end
set_work_on_these_programs(i) click to toggle source
#

set_work_on_these_programs

#
# File lib/rbt/misc/reverse_dependencies.rb, line 96
def set_work_on_these_programs(i)
  i = [i].flatten.compact.map {|entry|
    if entry.include? ' '
      entry = entry.split(' ').first
    end
    entry
  }
  @work_on_these_programs = i
end
unique_dependencies?() click to toggle source
#

unique_dependencies?

#
# File lib/rbt/misc/reverse_dependencies.rb, line 206
def unique_dependencies?
  @array_unique_dependencies.sort
end
Also aliased as: results?