From 64798aee389988659be39b4337bd760295194bee Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sun, 26 Jan 2014 01:59:49 -0500 Subject: bin/sisu changes to simplify switching to new stable & development branches --- bin/sisu | 370 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 243 insertions(+), 127 deletions(-) (limited to 'bin') diff --git a/bin/sisu b/bin/sisu index e945ff18..33de8437 100644 --- a/bin/sisu +++ b/bin/sisu @@ -1,144 +1,260 @@ #!/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__ -- cgit v1.2.3