From f6bc7d81dee102b438a9118a66a2f2a86382c729 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Wed, 3 Oct 2012 00:16:59 -0400 Subject: v4: bin/sisu $*, hub, make possible to specify dir path for markup files * bin/sisu4 & bin/sisu3 now syslinks to bin/sisu --- lib/sisu/v4/sysenv.rb | 196 ++++++++++++++++++++++++++++---------------------- 1 file changed, 112 insertions(+), 84 deletions(-) (limited to 'lib/sisu/v4/sysenv.rb') diff --git a/lib/sisu/v4/sysenv.rb b/lib/sisu/v4/sysenv.rb index 90df10fa..286fa408 100644 --- a/lib/sisu/v4/sysenv.rb +++ b/lib/sisu/v4/sysenv.rb @@ -90,9 +90,8 @@ module SiSU_Env YEAR end end - class InfoSystem + class InfoSystemGen require 'rbconfig' - include Singleton @@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@rc,@@sisurc_path,@@ad=ENV['USER'],ENV['HOME'],ENV['HOSTNAME'],ENV['PWD'],Config::CONFIG['sysconfdir'] + '/sisu',Config::CONFIG['host'],Config::CONFIG['arch'],%x{ruby -v}.strip,Config::CONFIG['archdir'],Config::CONFIG['sitearchdir'],Config::CONFIG['bindir'],%x{locale charmap}.strip,nil,nil,{} # %x{ruby -v}.strip # Config::CONFIG['rb_ver'] out=Config::CONFIG['localstatedir'] etc=Config::CONFIG['sysconfdir'] + '/sisu' @@ -214,31 +213,21 @@ module SiSU_Env } @@default_dir=DEFAULT_DIR m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m - stub_pwd=@@pwd[m,1] - @@rc_path=[ - "#{@@pwd}/.sisu/#{SiSU_version_dir}", - "#{@@pwd}/.sisu", - "#{@@pwd}/_sisu/#{SiSU_version_dir}", - "#{@@pwd}/_sisu", - "#{@@home}/.sisu/#{SiSU_version_dir}", - "#{@@home}/.sisu", - "#{@@sisu_etc}/#{SiSU_version_dir}", - ] - @@ad_path=(stub_pwd !~/^sisupod$/) \ - ? ([ - "#{@@pwd}/.sisu/skin/yml", - "#{@@pwd}/_sisu/skin/yml", - "#{@@home}/.sisu/skin/yml", - "#{@@sisu_etc}/skin/yml", - ]) - : ["#{@@home}/.sisu",@@sisu_etc] + @@pwd=@pwd=(/(\S+?)(?:\/(?:#{Px[:lng_lst_rgx]}))?$/).match(Dir.pwd)[1] + stub_pwd=@pwd[m,1] attr_accessor :user,:home,:hostname,:pwd,:host,:arch,:rbver,:dir_arch,:dir_sitearch,:dir_bin,:locale,:webserv_path,:webserv_host_cgi,:webserv_port_cgi,:default_dir,:rc_path,:ad_path def initialize - @user,@home,@hostname,@pwd,@sisu_etc,@host,@arch,@rbver,@dir_arch,@dir_sitearch,@dir_bin,@locale,@default_dir,@rc_path,@ad_path=\ - @@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@default_dir,@@rc_path,@@ad_path + @user,@home,@hostname,@pwd,@sisu_etc,@host,@arch,@rbver,@dir_arch,@dir_sitearch,@dir_bin,@locale,@default_dir=\ + @@user,@@home,@@hostname,@@pwd,@@sisu_etc,@@host,@@arch,@@rbver,@@dir_arch,@@dir_sitearch,@@dir_bin,@@locale,@@default_dir #note rbver is duplicated in InfoVersion end end + class InfoSystem < InfoSystemGen + include Singleton + def initialize + super() + end + end class Load def initialize(prog,mandatory=false) @prog,@mandatory=prog,mandatory @@ -275,14 +264,20 @@ module SiSU_Env load_prog end end - class GetInit < InfoSystem - include Singleton + class GetInit < InfoSystemGen @@noyaml=false @@rc,@@sisurc_path,@@vz,@@tx=nil,nil,nil,nil @@ad={ promo: nil, promo_list: nil, flag_promo: false } + @@sdmd=nil attr_accessor :yaml def initialize super() + @markup_dir_changed_=if @@sdmd==$sisu_document_markup_directory + false + else + @@sdmd=$sisu_document_markup_directory + true + end end def skin @@vz ||=SiSU_Viz::Skin.new @@ -292,7 +287,17 @@ module SiSU_Env end def sisu_yaml def rc - unless @@rc + if @markup_dir_changed_ + @rc_path=[ + "#{$sisu_document_markup_directory}/.sisu/#{SiSU_version_dir}", + "#{$sisu_document_markup_directory}/.sisu", + "#{$sisu_document_markup_directory}/_sisu/#{SiSU_version_dir}", + "#{$sisu_document_markup_directory}/_sisu", + "#{@@home}/.sisu/#{SiSU_version_dir}", + "#{@@home}/.sisu", + "#{@@sisu_etc}/#{SiSU_version_dir}", + "#{@@sisu_etc}", + ] @rc_path.each do |v| if @@noyaml \ or FileTest.exist?("#{v}/noyaml") @@ -303,16 +308,16 @@ module SiSU_Env f='sisurc.yml' if FileTest.exist?("#{v}/#{f}") require 'yaml' - @@sisurc_path="#{v}/#{f}" - @@rc=YAML::load(File::open(@@sisurc_path)) + @@sisurc_path=v + @@rc=YAML::load(File::open("#{@@sisurc_path}/#{f}")) break end unless @@rc f='sisurc.yaml' if FileTest.exist?("#{v}/#{f}") require 'yaml' - @@sisurc_path="#{v}/#{f}" - @@rc=YAML::load(File::open(@@sisurc_path)) + @@sisurc_path=v + @@rc=YAML::load(File::open("#{@@sisurc_path}/#{f}")) break end end @@ -329,40 +334,52 @@ module SiSU_Env end def ads #WORK AREA tell_no_yaml='WARNING - YAML loading switched off, to enable delete the file:' - @ad_path.each do |v| - if @@noyaml \ - or FileTest.exist?("#{v}/noyaml") - puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml - @@noyaml=true - break - else - if FileTest.exist?("#{v}/list.yml") - unless @@ad[:promo_list] - require 'yaml' - @@ad[:promo_list] ||= YAML::load(File::open("#{v}/list.yml")) - end - @@ad[:flag_promo]=true + if @markup_dir_changed_ + @ad_path=[ + "#{$sisu_document_markup_directory}/.sisu/#{SiSU_version_dir}/skin/yml", + "#{$sisu_document_markup_directory}/.sisu/skin/yml", + "#{$sisu_document_markup_directory}/_sisu/#{SiSU_version_dir}/skin/yml", + "#{$sisu_document_markup_directory}/_sisu/skin/yml", + "#{@@home}/.sisu/#{SiSU_version_dir}/skin/yml", + "#{@@home}/.sisu/skin/yml", + "#{@@sisu_etc}/#{SiSU_version_dir}/skin/yml", + "#{@@sisu_etc}/skin/yml", + ] + @ad_path.each do |v| + if @@noyaml \ + or FileTest.exist?("#{v}/noyaml") + puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml + @@noyaml=true break + else + if FileTest.exist?("#{v}/list.yml") + unless @@ad[:promo_list] + require 'yaml' + @@ad[:promo_list] ||= YAML::load(File::open("#{v}/list.yml")) + end + @@ad[:flag_promo]=true + break + end + @@ad[:flag_promo]=false end - @@ad[:flag_promo]=false end - end - @ad_path.each do |v| - if @@noyaml \ - or FileTest.exist?("#{v}/noyaml") - puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml - @@noyaml=true - break - else - if FileTest.exist?("#{v}/promo.yml") - unless @@ad[:promo] - require 'yaml' - @@ad[:promo] ||= YAML::load(File::open("#{v}/promo.yml")) - end - @@ad[:flag_promo]=true + @ad_path.each do |v| + if @@noyaml \ + or FileTest.exist?("#{v}/noyaml") + puts tell_no_yaml + "\n\t#{v}/noyaml\n" unless @@noyaml + @@noyaml=true break + else + if FileTest.exist?("#{v}/promo.yml") + unless @@ad[:promo] + require 'yaml' + @@ad[:promo] ||= YAML::load(File::open("#{v}/promo.yml")) + end + @@ad[:flag_promo]=true + break + end + @@ad[:flag_promo]=false end - @@ad[:flag_promo]=false end end @@ad @@ -373,11 +390,11 @@ module SiSU_Env @@ad={} attr_accessor :rc,:fnn,:fnb,:fnt,:fnv,:fnz,:ad def initialize(fns='') - super() @fns=fns @sys=InfoSystem.instance - @rc=GetInit.instance.sisu_yaml.rc - @ad=GetInit.instance.ads + get_init=SiSU_Env::GetInit.new + @rc=get_init.sisu_yaml.rc + @ad=get_init.ads if @fns \ and @fns != '' \ and @fns !=@@fns @@ -1374,9 +1391,9 @@ module SiSU_Env : false end def widget #needs (md) #move - @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc - @ad=SiSU_Env::GetInit.instance.ads - @vz=SiSU_Env::GetInit.instance.skin + @rc=SiSU_Env::GetInit.new.sisu_yaml.rc + @ad=SiSU_Env::GetInit.new.ads + @vz=SiSU_Env::GetInit.new.skin @flag={ ad: false, md: false, sk: false, rc: false } def promo? @flag[:ad]=if @md.flag_promo && @ad[:flag_promo] @@ -1449,7 +1466,7 @@ module SiSU_Env end end def search_form(type='sisusearch',action=nil,db=nil,table=false) - rc=SiSU_Env::GetInit.instance.sisu_yaml.rc + rc=SiSU_Env::GetInit.new.sisu_yaml.rc create_form_sisu=if action \ and db \ and action =~/https?:\/\// \ @@ -1505,7 +1522,7 @@ WOK form end def search_form_static(action=nil,db=nil) - rc=SiSU_Env::GetInit.instance.sisu_yaml.rc + rc=SiSU_Env::GetInit.new.sisu_yaml.rc create_form=if rc['search']['sisu']['flag']==true \ and action \ and db \ @@ -1553,8 +1570,8 @@ WOK self end def widget_static - @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc - @vz=SiSU_Env::GetInit.instance.skin + @rc=SiSU_Env::GetInit.new.sisu_yaml.rc + @vz=SiSU_Env::GetInit.new.skin @flag={ ad: false, md: false, sk: false, rc: false } def search? flag=if defined? @rc['search'] \ @@ -1601,7 +1618,7 @@ WOK end end def search_form(action=nil,db=nil) - rc=SiSU_Env::GetInit.instance.sisu_yaml.rc + rc=SiSU_Env::GetInit.new.sisu_yaml.rc create_form=if defined? rc['search']['sisu']['flag'] \ and rc['search']['sisu']['flag']==true \ and action \ @@ -1738,22 +1755,32 @@ WOK end self end - def read_source_file(fns) + def read_source_file_array(fns) fns_array=unless fns =~/\.ssm.sst$/ IO.readlines(fns, mode: 'r:utf-8', cr_newline: true) else IO.readlines("#{processing_path.composite_file}/#{fns}", mode: 'r:utf-8', cr_newline: true) end end + def read_source_file(fns) + read_source_file_array(fns) + end + def read_source_file_string(fns) + fns_str=unless fns =~/\.ssm.sst$/ + IO.read(fns, mode: 'r:utf-8', cr_newline: true) + else + IO.read("#{processing_path.composite_file}/#{fns}", mode: 'r:utf-8', cr_newline: true) + end + end def source_file_processing_array(fns) - sf=read_source_file(fns).join.split(/\s*\n\s*\n/m) + sf=read_source_file_string(fns).split(/\s*\n\s*\n/m) end def path #dir def home @sys.home end def sisurc_path - GetInit.instance.sisu_yaml.rc_path + GetInit.new.sisu_yaml.rc_path end def pwd @sys.pwd @@ -1824,7 +1851,7 @@ WOK @sys.rc_path end def yamlrc - GetInit.instance.sisu_yaml.rc_path + GetInit.new.sisu_yaml.rc_path end def man #check use (defined? @rc['webserv']['man']) \ @@ -2724,7 +2751,7 @@ WOK class InfoProcessingFlag attr_accessor :color,:cf_0,:cf_1,:cf_2,:cf_3,:cf_4,:cf_5 def initialize - @rc=GetInit.instance.sisu_yaml.rc + @rc=GetInit.new.sisu_yaml.rc end def color #processing flag shortcuts (defined? @rc['flag']['color']) ? @rc['flag']['color'] : false @@ -2959,7 +2986,7 @@ WOK end class InfoRemoteHost def initialize - @rc=GetInit.instance.sisu_yaml.rc + @rc=GetInit.new.sisu_yaml.rc end def remote_host #see InfoRemote remote_host_base_general r=[] @@ -3043,7 +3070,7 @@ WOK def initialize(opt) super(opt) # @opt=opt - @rc=GetInit.instance.sisu_yaml.rc + @rc=GetInit.new.sisu_yaml.rc end def remote_host_base_general SiSU_Env::InfoRemoteHost.new.remote_host @@ -3396,7 +3423,9 @@ WOK def get_version @version={} @pwd=ENV['PWD'] - yst_ver="#{defaults[:sisu_share]}/#{SiSU_version_dir}/v/version.yml" + yst_ver=SiSU_path_specified_Version_ \ + ? SiSU_path_specified_Version_ + : "#{defaults[:sisu_share]}/#{SiSU_version_dir}/v/version.yml" lib_path=@@lib_path ? @@lib_path : `echo $RUBYLIB`.split(':') @@lib_path ||=lib_path if File.exist?(yst_ver); @version=YAML::load(File::open(yst_ver)) #unless @@noyaml @@ -3493,7 +3522,7 @@ WOK @md=md end def cnf_rc #sisurc.yml - @rc=SiSU_Env::GetInit.instance.sisu_yaml.rc + @rc=SiSU_Env::GetInit.new.sisu_yaml.rc end def env_rc #env rc (including sisurc.yml) @env_rc ||=SiSU_Env::InfoEnv.new(@md.fns) @@ -3821,14 +3850,13 @@ WOK class InfoDb < InfoEnv @@rc=nil def initialize - @@pwd ||=Dir.pwd - @pwd=Dir.pwd + @@pwd=@pwd=(/(\S+?)(?:\/(?:#{Px[:lng_lst_rgx]}))?$/).match(Dir.pwd)[1] @env=SiSU_Env::InfoEnv.new pt=Pathname.new(@pwd) r=Px[:lng_lst_rgx] u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/ @pwd_stub=pt.realpath.to_s[u,1] - @rc=@@rc ||=GetInit.instance.sisu_yaml.rc + @rc=@@rc ||=GetInit.new.sisu_yaml.rc @defaults=SiSU_Env::InfoEnv.new.defaults end def share_source? @@ -5630,7 +5658,7 @@ WOK md.doc_skin else nil end - @home,@pwd=ENV['HOME'],ENV['PWD'] + @home,@pwd=ENV['HOME'],Dir.pwd m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m @pwd_stub=@pwd[m,1] @env=SiSU_Env::InfoEnv.new @@ -5807,8 +5835,8 @@ WOK @cmd=cmd @env=SiSU_Env::InfoEnv.new @home,@pwd=ENV['HOME'],ENV['PWD'] #@pwd=Dir.pwd - @rc=GetInit.instance.sisu_yaml.rc - @vz=SiSU_Env::GetInit.instance.skin + @rc=GetInit.new.sisu_yaml.rc + @vz=SiSU_Env::GetInit.new.skin @vz_home=SiSU_Viz::Home.new end def homepage -- cgit v1.2.3