aboutsummaryrefslogtreecommitdiffhomepage
path: root/bin
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2014-01-26 01:59:49 -0500
committerRalph Amissah <ralph@amissah.com>2014-01-26 01:59:49 -0500
commit64798aee389988659be39b4337bd760295194bee (patch)
treeee0cfcd11080e03fc74001515e9dc34f0d19461c /bin
parentv4 v5: version & changelog (& rakefile) [v4 about to be closed] (diff)
bin/sisu changes to simplify switching to new stable & development branchessisu_4.2.21
Diffstat (limited to 'bin')
-rw-r--r--bin/sisu370
1 files changed, 243 insertions, 127 deletions
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__