class RBT::ToCurrent

Constants

NAMESPACE
#

NAMESPACE

#

Public Class Methods

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

RBT::ToCurrent[]

#
# File lib/rbt/utility_scripts/to_current.rb, line 243
def self.[](i = '')
  new(i)
end
new( program_version = nil, run_already = true ) { || ... } click to toggle source
#

initialize

The input to this method should be a String such as “/Programs/Python/3.6.2/”.

#
# File lib/rbt/utility_scripts/to_current.rb, line 39
def initialize(
    program_version = nil,
    run_already     = true
  )
  reset
  set_symlink_this_program_version(program_version)
  if block_given?
    yielded = yield
    case yielded
    when :do_not_register
      @also_do_register_into_the_yaml_database = false
    else
      if yielded.is_a? Hash
        if yielded.has_key? :use_this_symlink_program_instance
          set_symlink_program(yielded.delete(:use_this_symlink_program_instance))
        end
      end
    end
  end
  run if run_already
end

Public Instance Methods

current_target?() click to toggle source
#

current_target?

This method will assemble the target residing under the /Programs hierarchy.

#
# File lib/rbt/utility_scripts/to_current.rb, line 170
def current_target?
  programs_dir?+program_name?+'/Current'
end
full_program_version_target?() click to toggle source
#

full_program_version_target?

This method is assumed to point to a directory.

#
# File lib/rbt/utility_scripts/to_current.rb, line 179
def full_program_version_target?
  "#{programs_dir?}#{program_name?}/#{program_version?}/"
end
program_name?() click to toggle source
#

program_name?

#
# File lib/rbt/utility_scripts/to_current.rb, line 160
def program_name?
  @program_name
end
program_version?() click to toggle source
#

program_version?

#
# File lib/rbt/utility_scripts/to_current.rb, line 87
def program_version?
  @symlink_this_program_version
end
reset() click to toggle source
#

reset (reset tag)

#
Calls superclass method RBT::Base#reset
# File lib/rbt/utility_scripts/to_current.rb, line 64
def reset
  super()
  set_program_name # Must initialize it at the least once.
  @also_do_register_into_the_yaml_database = true
  @symlink_program = RBT::SymlinkThisProgram.new(nil, :do_not_run_yet)
  @namespace = NAMESPACE
end
rnsymc( i = full_program_version_target? ) click to toggle source
#

rnsymc

This method delegates towards class RBT::SymlinkThisProgram.

#
# File lib/rbt/utility_scripts/to_current.rb, line 220
def rnsymc(
    i = full_program_version_target?
  )
  @symlink_program.set_use_this_program(i)
  if @also_do_register_into_the_yaml_database
    # pass through in this case
  else
    @symlink_program.do_not_register
  end
  @symlink_program.run
end
run() click to toggle source
#

run (run tag)

#
# File lib/rbt/utility_scripts/to_current.rb, line 235
def run
  considering_deleting_the_current_symlink_if_it_exists
  do_create_the_new_symlink
end
set_program_name(i = nil) click to toggle source
#

set_program_name

The setter of the program name.

#
# File lib/rbt/utility_scripts/to_current.rb, line 96
def set_program_name(i = nil)
  i = i.first if i.is_a? Array
  if i.nil?
    # ===================================================================== #
    # In this case, we will try to obtain the program name from
    # the target directory.
    # ===================================================================== #
    _ = Dir.pwd
    if _.include? programs_dir? and
       (_.count('/') > 1)
       i = _
    end
  end
  i = i.to_s.dup
  i = File.basename(i) if i.include? '/'
  i.capitalize!
  @program_name = i
end
set_program_version(i)