bin/sisu changes to simplify switching to new stable & development branches sisu_4.2.21
authorRalph Amissah <ralph@amissah.com>
Sun, 26 Jan 2014 06:59:49 +0000 (01:59 -0500)
committerRalph Amissah <ralph@amissah.com>
Sun, 26 Jan 2014 06:59:49 +0000 (01:59 -0500)
bin/sisu
data/doc/sisu/CHANGELOG_v4
data/doc/sisu/CHANGELOG_v5

index e945ff180eb08929fffa431a746381a50ebec352..33de843798dc4b38f5f5bf943e71d3b7d6425d10 100644 (file)
--- a/bin/sisu
+++ b/bin/sisu
 #!/usr/bin/env ruby
 # encoding: utf-8
 #SiSU: copyright (C) 1997 - 2014 Ralph Amissah; License GPL 3, see appended program information
-begin
-  def require_hub_path(sisu_path_specified_lib_)
-    if sisu_path_specified_lib_ \
-    && FileTest.file?("#{sisu_path_specified_lib_}/#{@sisu_lib}/hub.rb")
-      "#{sisu_path_specified_lib_}/#{@sisu_lib}"
-    else @sisu_lib
-    end
-  end
-  def select_version_check(instructions)
-    case instructions
-    when /"(?:--v4|--current|--stable)"/              then @version[:stable]
-    when /"(?:--v5|--next|--dev)"/                    then @version[:unstable]
-    else                                                   @version[:default]
-    end
-  end
-#% sisu branch
-  $VERBOSE=nil
-  argv=$*
-  @sisu_called_from_directory=Dir.pwd
-  require 'rubygems'
-  @version={
-    stable:   'v4',
-    unstable: 'v5',
-  }
-  @version[:default]=@version[:stable]
-  if $0 == __FILE__ \
-  and File.dirname(__FILE__) != Config::CONFIG['bindir']
-    sisu_run_from_= :full_path_to_sisu_bin_in_sisu_dir_tree
-    sisu_version_dir_=case $0
-    when /\bsisu4$/                                   then @version[:stable]
-    when /\bsisu5$/                                   then @version[:unstable]
-    else select_version_check(argv.inspect)
-    end
-  elsif __FILE__ =~/\/gems\// \
-  and  __FILE__ =~/\/sisu-[45]\.(?:\d+|[a-z])\.(?:\d+|[a-z])\//
-    sisu_run_from_=:gem_install
-    sisu_version_dir_=case __FILE__
-    when /\/sisu-4\.(?:\d+|[a-z])\.(?:\d+|[a-z])\//   then @version[:stable]
-    when /\/sisu-5\.(?:\d+|[a-z])\.(?:\d+|[a-z])\//   then @version[:unstable]
-    else                                                   @version[:default]
-    end
-  else
-    sisu_run_from_=:system_install
-    sisu_version_dir_=case $0
-    when /\bsisu4$/                                   then @version[:stable]
-    when /\bsisu5$/                                   then @version[:unstable]
-    else select_version_check(argv.inspect)
-    end
-  end
-#% $0 File.expand_path($0)
-  sisu_path_base=if sisu_run_from_ == :system_install \
-  and $0 =~ /^#{Config::CONFIG['bindir']}\/sisu[45]?$/
-    sisu_path_base_system_data=Config::CONFIG['datadir'] + '/sisu'
-    Config::CONFIG['datadir'] + '/sisu' # system install more widely distributed
-  elsif sisu_run_from_ == :full_path_to_sisu_bin_in_sisu_dir_tree \
-  and $0 !~ /^#{Config::CONFIG['bindir']}\/sisu[45]?$/ \
-  && File.expand_path($0) =~/bin\/sisu[45]?$/ \
-  && FileTest.file?($0)
-    sisu_path_base_system_data=File.expand_path($0).sub(/\/bin\/sisu[45]?$/,'/data/sisu')
-    File.expand_path($0).sub(/\/bin\/sisu[45]?$/,'')
-  elsif sisu_run_from_==:gem_install
-    sisu_path_base_system_data=Gem::Specification.find_by_name("sisu").gem_dir + '/data/sisu'
-    Gem::Specification.find_by_name("sisu").gem_dir
-  else nil
-  end
-  @sisu_lib="sisu/#{sisu_version_dir_}"
-  sisu_path_specified_lib_=($0 !~ /^#{Config::CONFIG['bindir']}\/sisu[45]?$/) \
-  ? File.expand_path($0).sub(/bin\/sisu[45]?$/,'lib')
-  : nil
-  sisu_version_info_path_="#{sisu_path_base_system_data}/#{sisu_version_dir_}/v/version.yml"
-  sisu_path_lib="#{require_hub_path(sisu_path_specified_lib_)}"
-  lng_lst_ = %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it ja ko la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi zh]
-  SiSU_is={
-    run_from:              sisu_run_from_,
-    version_dir:           sisu_version_dir_,
-    path_base:             sisu_path_base,
-    path_base_system_data: sisu_path_base_system_data,
-    path_lib:              sisu_path_lib,
-    version_info_path:     sisu_version_info_path_,
-    language_list:         lng_lst_,
-  }
-#% $*
-  require "#{SiSU_is[:path_lib]}/hub"
-  lng_lst_rgx=SiSU_is[:language_list].join('|')
-  argv_sub_files={}
-  argv_sub_mods=[]
-  argv.each do |x|
-    if x =~/^-+/
-      argv_sub_mods << x
-    elsif x =~/\.ss[tm]/
-      if x =~/\//
-        markup_path,markup_file =(/(\S+\/)((?:#{lng_lst_rgx})?[^\/]+)/).match(x)[1,2]
-        if not argv_sub_files[markup_path]
-          argv_sub_files[markup_path]=[]
-        end
-        argv_sub_files[markup_path] << markup_file
+class Orient
+  require 'singleton'
+  include Singleton
+  def initialize #(called_as_,argv)
+    super()
+    @called_as,@argv=$0,$*
+  end
+  def version
+    def stable
+     '4'
+    end
+    def unstable
+     '5'
+    end
+    def default
+     stable
+    end
+    self
+  end
+  def sisu_called_from_directory
+    Dir.pwd
+  end
+  def sisu_run_from
+    if processing.called_as == processing.file_full_path \
+    and File.dirname(processing.file_full_path) != Config::CONFIG['bindir']
+      :full_path_to_sisu_bin_in_sisu_dir_tree
+    elsif processing.file_full_path =~/\/gems\// \
+    and  processing.file_full_path =~/\/sisu-[#{version.stable}#{version.unstable}]\.(?:\d+|[a-z])\.(?:\d+|[a-z])\//
+      :gem_install
+    else
+      :system_install
+    end
+  end
+  def processing
+    def called_as
+      @called_as
+    end
+    def argv
+      @argv
+    end
+    def argv_str
+      argv.inspect
+    end
+    def file_full_path
+      __FILE__
+    end
+    def stable
+      'v' + version.stable
+    end
+    def unstable
+      'v' + version.unstable
+    end
+    def default
+      'v' + version.default
+    end
+    def stable_bin_file_regex
+      %r{\bsisu#{version.stable}$}
+    end
+    def unstable_bin_file_regex
+      %r{\bsisu#{version.unstable}$}
+    end
+    def stable_gem_regex
+      %r{\/sisu-#{version.stable}\.(?:\d+|[a-z])\.(?:\d+|[a-z])\/}
+    end
+    def unstable_gem_regex
+      %r{\/sisu-#{version.unstable}\.(?:\d+|[a-z])\.(?:\d+|[a-z])\/}
+    end
+    def stable_modifier_regex
+      %r{"(?:--v#{version.stable}|--current|--stable)"}
+    end
+    def unstable_modifier_regex
+      %r{"(?:--v#{version.unstable}|--current|--stable)"}
+    end
+    self
+  end
+  def sisu_lib
+    "sisu/#{select_version_check}"
+  end
+  def sisu_path_lib
+    if sisu_path_specified_lib \
+    && FileTest.file?("#{sisu_path_specified_lib}/#{sisu_lib}/hub.rb")
+      "#{sisu_path_specified_lib}/#{sisu_lib}"
+    else sisu_lib
+    end
+  end
+  def sisu_version_info_path
+    "#{sisu_path_base_system_data}/#{select_version_check}/v/version.yml"
+  end
+  def select_version_check
+    if sisu_run_from == :full_path_to_sisu_bin_in_sisu_dir_tree \
+    or sisu_run_from == :system_install
+      case processing.called_as
+      when processing.stable_bin_file_regex         then processing.stable
+      when processing.unstable_bin_file_regex       then processing.unstable
       else
-        if not argv_sub_files['./']
-          argv_sub_files['./']=[]
+        case processing.argv_str
+        when processing.stable_modifier_regex       then processing.stable
+        when processing.unstable_modifier_regex     then processing.unstable
+        else                                             processing.default
         end
-        argv_sub_files['./'] << x
       end
+    elsif sisu_run_from == :gem_install
+      case processing.file_full_path
+      when processing.stable_gem_regex              then processing.stable
+      when processing.unstable_gem_regex            then processing.unstable
+      else                                               processing.default
+      end
+    else                                                 processing.default
+    end
+  end
+  def paths_set
+    if sisu_run_from == :system_install \
+    and processing.called_as =~ /^#{Config::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/
+      :set_path_system
+    elsif sisu_run_from == :full_path_to_sisu_bin_in_sisu_dir_tree \
+    and processing.called_as !~ /^#{Config::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/ \
+    && File.expand_path(processing.called_as) =~/bin\/sisu[#{version.stable}#{version.unstable}]?$/ \
+    && FileTest.file?(processing.called_as)
+      :set_dir_tree_full_path
+    elsif sisu_run_from==:gem_install
+      :set_gem_path
+    else nil
+    end
+  end
+  def sisu_path_base
+    case paths_set
+    when :set_path_system
+      Config::CONFIG['datadir'] + '/sisu'
+    when :set_dir_tree_full_path
+      File.expand_path(processing.called_as).sub(/\/bin\/sisu[#{version.stable}#{version.unstable}]?$/,'')
+    when :set_gem_path
+      Gem::Specification.find_by_name("sisu").gem_dir
+    else nil
+    end
+  end
+  def sisu_path_base_system_data
+    case paths_set
+    when :set_path_system
+      Config::CONFIG['datadir'] + '/sisu'
+    when :set_dir_tree_full_path
+      File.expand_path(processing.called_as).sub(/\/bin\/sisu[#{version.stable}#{version.unstable}]?$/,'/data/sisu')
+    when :set_gem_path
+      Gem::Specification.find_by_name("sisu").gem_dir + '/data/sisu'
+    else nil
+    end
+  end
+  def sisu_path_specified_lib
+    if (processing.called_as !~ /^#{Config::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/)
+      File.expand_path(processing.called_as).sub(/bin\/sisu[#{version.stable}#{version.unstable}]?$/,'lib')
+    else nil
     end
   end
-  if argv_sub_files.length > 0
-    argv_sub_files.each_pair do |markup_dir,markup_file|
-      $sisu_document_markup_directory=markup_dir.gsub(/\/$/,'')
-      argv_sub=argv_sub_mods + markup_file
-      if FileTest.directory?(markup_dir)
-        system("cd #{markup_dir}")
-        Dir.chdir(markup_dir)
-        $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/\/(?:#{lng_lst_rgx})$/,'')
-        SiSU::HubMaster.new(argv_sub)
-        Dir.chdir(@sisu_called_from_directory)
-        system("cd #{@sisu_called_from_directory}")
-      elsif markup_dir =~/https?:/
-        markup_file.each do |mf|
-          (FileTest.file?(mf)) \
-          ? (puts 'requested remote file already exists in current directory ' + Dir.pwd + ' using ' + mf)
-          : (system("wget #{markup_dir}/#{mf}"))
+  def language_list
+    def codes
+      %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it ja ko la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi zh]
+    end
+    def regex
+      codes.join('|')
+    end
+    self
+  end
+  def sisu_is
+    {
+      run_from:              sisu_run_from,
+      version_dir:           select_version_check,
+      path_base:             sisu_path_base,
+      path_base_system_data: sisu_path_base_system_data,
+      path_lib:              sisu_path_lib,
+      version_info_path:     sisu_version_info_path,
+      language_list:         language_list.codes,
+    }
+  end
+  def get_processing_info
+    def sortout
+      unless @clm_pf
+        processing_files={}
+        command_line_modifiers=[]
+        processing.argv.each do |x|
+          if x =~/^-+/
+            command_line_modifiers << x
+          elsif x =~/\.ss[tm]/
+            if x =~/\//
+              markup_path,markup_file =(/(\S+\/)((?:#{language_list.regex})?[^\/]+)/).match(x)[1,2]
+              if not processing_files[markup_path]
+                processing_files[markup_path]=[]
+              end
+              processing_files[markup_path] << markup_file
+            else
+              if not processing_files['./']
+                processing_files['./']=[]
+              end
+              processing_files['./'] << x
+            end
+          end
+        end
+      end
+      @clm_pf ||={
+        command_line_modifiers: command_line_modifiers,
+        processing_files:       processing_files,
+      }
+    end
+    def command_line_modifiers
+      sortout[:command_line_modifiers]
+    end
+    def processing_files
+      sortout[:processing_files]
+    end
+    self
+  end
+  def control
+    require "#{sisu_is[:path_lib]}/hub"
+    if get_processing_info.processing_files. length > 0
+      get_processing_info.processing_files.each_pair do |markup_dir,markup_file|
+        $sisu_document_markup_directory=markup_dir.gsub(/\/$/,'')
+        argv_sub=get_processing_info.command_line_modifiers + markup_file
+        if FileTest.directory?(markup_dir)
+          system("cd #{markup_dir}")
+          Dir.chdir(markup_dir)
+          $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/\/(?:#{language_list.regex})$/,'')
+          SiSU::HubMaster.new(argv_sub)
+          Dir.chdir(sisu_called_from_directory)
+          system("cd #{sisu_called_from_directory}")
+        elsif markup_dir =~/https?:/
+          markup_file.each do |mf|
+            (FileTest.file?(mf)) \
+            ? (puts 'requested remote file already exists in current directory ' + Dir.pwd + ' using ' + mf)
+            : (system("wget #{markup_dir}/#{mf}"))
+          end
+          $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/\/(?:#{language_list.regex})$/,'')
+          argv_sub=command_line_modifiers + markup_file
+          SiSU::HubMaster.new(argv_sub)
+        else p "Error directory specified #{markup_dir} not found"
         end
-        $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/\/(?:#{lng_lst_rgx})$/,'')
-        argv_sub=argv_sub_mods + markup_file
-        SiSU::HubMaster.new(argv_sub)
-      else p "Error directory specified #{markup_dir} not found"
       end
+    else
+      $sisu_document_markup_directory=Dir.pwd.gsub(/\/$/,'')
+      $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/(^|\/)(?:#{language_list.regex})$/,'')
+      SiSU::HubMaster.new(processing.argv)
     end
-  else
-    $sisu_document_markup_directory=Dir.pwd.gsub(/\/$/,'')
-    $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/(^|\/)(?:#{lng_lst_rgx})$/,'')
-    SiSU::HubMaster.new(argv)
   end
-rescue
+end
+#% sisu select source & branch, begin
+$VERBOSE=nil
+require 'rbconfig'
+require 'rubygems'
+begin
+  require 'singleton'
+  s=Orient.instance
+  SiSU_is=s.sisu_is
+  s.control
+rescue #% -
   STDERR.puts 'ERROR'
   STDERR.puts $!
   STDERR.puts $@
-  require 'rbconfig'
-  require 'rubygems'
   puts %{
                    #{%x{ruby -v}.strip.to_s}
                    #{RUBY_VERSION}
@@ -151,7 +267,7 @@ rescue
   }
   system(%{echo "
     system RUBYPATH: ${RUBYPATH}
-    system RUBYLIB: ${RUBYLIB}
+    system RUBYLIB:  ${RUBYLIB}
   "})
 end
 __END__
index a512b595133330bd3024bfe6e3ddcac54f99e76f..cebc237f503cebcdfbe40c099724a61c7b2aed46 100644 (file)
@@ -34,6 +34,8 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_4.2.21.orig.tar.xz
 
 [closing]
 
+* bin/sisu changes to simplify switching to new stable and development branches
+
 %% 4.2.20.orig.tar.xz (2014-01-20:03/1)
 http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_4.2.20
 http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_4.2.20-1
index e6c30a6d5b9bbb036be40041010cdde9340159ca..5501559683c1c38f1ad9229b29f4b7ab526e888b 100644 (file)
@@ -36,6 +36,8 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_5.2.4.orig.tar.xz
   sisu_5.2.4.orig.tar.xz
   sisu_5.2.4-1.dsc
 
+* bin/sisu changes to simplify switching to new stable and development branches
+
 %% 5.2.3.orig.tar.xz (2014-01-20:03/1)
 http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_5.2.3
 http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_5.2.3-1