aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v4/sysenv.rb
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2012-10-03 00:16:59 -0400
committerRalph Amissah <ralph@amissah.com>2012-10-03 00:16:59 -0400
commitf6bc7d81dee102b438a9118a66a2f2a86382c729 (patch)
tree36fe1d991dbbcb34426bd17afa212086be937994 /lib/sisu/v4/sysenv.rb
parentv4: bin/sisu $0, make possible to run sisu command on/within project dir tree (diff)
v4: bin/sisu $*, hub, make possible to specify dir path for markup files
* bin/sisu4 & bin/sisu3 now syslinks to bin/sisu
Diffstat (limited to 'lib/sisu/v4/sysenv.rb')
-rw-r--r--lib/sisu/v4/sysenv.rb196
1 files changed, 112 insertions, 84 deletions
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