From 7c6478d290c854f26d4b954bb5ed47871ceefd62 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Mon, 15 Oct 2007 02:09:59 +0100 Subject: composite master renaming, and; multiple remote puts (rsync|scp) * composite master files: eliminate ._sst, replace with .ssm.sst * multiple remote hosts ("distributed" rsyncing), yml config files remote now uses array with all recent changes (directory shunting) much testing is yet to be done, state is unstable some things are known not to work this instant, e.g. sisu -V --- lib/sisu/v0/sysenv.rb | 303 ++++++++++++++++++++++++++++---------------------- 1 file changed, 167 insertions(+), 136 deletions(-) (limited to 'lib/sisu/v0/sysenv.rb') diff --git a/lib/sisu/v0/sysenv.rb b/lib/sisu/v0/sysenv.rb index 4252529d..510324c7 100644 --- a/lib/sisu/v0/sysenv.rb +++ b/lib/sisu/v0/sysenv.rb @@ -353,19 +353,19 @@ module SiSU_Env end if @fns and @fns != '' #watch if multilingual - m=/((.+?)(?:\~\w{2,3})?)\.([_-]?sst|ssm)$/ + m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst|ssm)$/ @@fnn ||=@fns[m,1] @@fnb ||=@fns[m,2] @@fnt ||=@fns[m,3] @@flv ||=document_language_versions_found[:f] - @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:_sst|ssm)$/; @@fnb + '.ssm.zip' + @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; @@fnb + '.ssm.zip' else @@fnb + '.sst.zip' end - else m=/(.+?)\.([_-]?sst|ssm)$/ + else m=/(.+?)\.((?:-|ssm\.)?sst|ssm)$/ @@fnb ||=@fns[m,1] @@fnm ||=@fns[m,1] @@fnt ||=@fns[m,2] - @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:_sst|ssm)$/; @@fnb + '.ssm.zip' + @@fnz ||=if @@fns =~/(?:\~\S{2,3})?\.(?:ssm\.sst|ssm)$/; @@fnb + '.ssm.zip' else @@fnb + '.sst.zip' end end @@ -381,9 +381,9 @@ module SiSU_Env @fn={} unless (@fns.nil? or @fns.empty?) if multilingual - m=/((.+?)(?:\~\w{2,3})?)\.([_-]?sst$)/ + m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst$)/ @fn[:b],@fn[:m],@fn[:t]=@fns[m,1],@fns[m,2],@fns[m,3] - else m=/(.+?)\.([_-]?sst$)/ + else m=/(.+?)\.((?:-|ssm\.)?sst$)/ @fn[:b]=@fn[:m]=@fns[m,1] @fn[:t]=@fns[m,2] end @@ -411,10 +411,10 @@ module SiSU_Env @m=[] unless (@fns.nil? or @fns.empty?) if multilingual - m=/((.+?)(?:\~\w{2,3})?)\.([_-]?sst$)/ + m=/((.+?)(?:\~\w{2,3})?)\.((?:-|ssm\.)?sst$)/ @fn[:b],@fn[:m],@fn[:t]=@fns[m,1],@fns[m,2],@fns[m,3] #@fl[:v]=@env.document_language_versions_found - else m=/(.+?)\.([_-]?sst$)/ + else m=/(.+?)\.((?:-|ssm\.)?sst$)/ @fn[:b]=@fn[:m]=@fns[m,1] @fn[:t]=@fns[m,2] end @@ -744,7 +744,7 @@ module SiSU_Env language[:c] end def file_to_language(file) - m=/.+?\~(\w{2,3})\.[_-]?sst$/ + m=/.+?\~(\w{2,3})\.(?:-|ssm\.)?sst$/ @language=if file =~m ; file[m,1] else '' end @@ -767,7 +767,7 @@ module SiSU_Env fnb=if @md and defined? @md.fnb; @md.fnb elsif defined? @env.fnb and @env.fnb; @env.fnb elsif not @fns.nil? and not @fns.empty? - m=/(.+)?\.(?:[_-]?sst|ssm)$/m + m=/(.+)?\.(?:(?:-|ssm\.)?sst|ssm)$/m @fns[m,1] if not @fns.empty? end if fnb; @@fb ||=fnb @@ -1110,17 +1110,17 @@ WOK self end def source_file_path - file=@fns.gsub(/(\.ssm)/,'._sst') - pth=unless file =~/\._sst$/; "#{Dir.pwd}" + file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst') + pth=unless file =~/\.ssm\.sst$/; "#{Dir.pwd}" else "#{path.composite_file}" end end def source_file_with_path - file=@fns.gsub(/(\.ssm)/,'._sst') + file=@fns.gsub(/\.ssm(?:\.sst)?/,'.ssm.sst') "#{source_file_path}/#{file}" end def read_source_file(fns) - fns_array=unless fns =~/\._sst$/ + fns_array=unless fns =~/\.ssm.sst$/ IO.readlines(fns,'') else IO.readlines("#{path.composite_file}/#{fns}",'') end @@ -2004,23 +2004,38 @@ WOK @rc=Get_init.instance.yamlrc end def remote_host #see Info_remote remote_host_base_general - r={} - r=if (defined? @rc['remote']['user'] and defined? @rc['remote']['host']) - r[:user]=@rc['remote']['user'] - r[:host]=@rc['remote']['host'] - r[:path]=if defined? @rc['remote']['path'] + r=[] + r=if (defined? @rc['remote'] and @rc['remote'].class==Array) + r_array=@rc['remote'] + r_array.each_with_index do |renv,i| + r[i]={} + if defined? renv['user'] and defined? renv['host'] + end + r[i][:user]=renv['user'] + r[i][:host]=renv['host'] + r[i][:path]=if defined? renv['path'] + renv['path'] + else '' + end + r[i][:name]="#{r[i][:user]}@#{r[i][:host]}:#{r[i][:path]}" + end + r + elsif (defined? @rc['remote'] and @rc['remote'].class==Hash and defined? @rc['remote']['user'] and defined? @rc['remote']['host']) + r[0][:user]=@rc['remote']['user'] + r[0][:host]=@rc['remote']['host'] + r[0][:path]=if defined? @rc['remote']['path'] @rc['remote']['path'] else '' end - r[:name]="#{r[:user]}@#{r[:host]}:#{r[:path]}" + r[0][:name]="#{r[:user]}@#{r[:host]}:#{r[:path]}" r else - r[:name]='.' - r[:user]='' - r[:host]='' - r[:path]='' - r + r[0][:name]='.' + r[0][:user]='' + r[0][:host]='' + r[0][:path]='' #puts "no remote host or user" + r end end end @@ -2036,138 +2051,154 @@ WOK SiSU_Env::Info_remote_host.new.remote_host end def remote_host_base - remote=remote_host_base_general - #host_ip=IPSocket.getaddress(remote[:host]) unless remote[:host].empty? - @@flag_remote=true if remote[:name] =~/\S+?@\S+/ #and host_ip =~/\d+\.\d+\.\d+\.\d+/ #very naive check should be enough /[0-255]+\.[0-255]+\.[0-255]+\.[0-255]+/ - remote_host_base_general[:name] + remote_host_base_general.each do |remote_conn| + #host_ip=IPSocket.getaddress(remote[:host]) unless remote[:host].empty? + @@flag_remote=true if remote_conn[:name] =~/\S+?@\S+/ + #remote_conn[:name] + end + remote_host_base_general end def scp #sort out later using ruby libraries #not ideal, first time each file is sent, -r must be called separately for subdir to be built - local=@source_path - remote=case @opt.cmd - when /u/; "#{self.remote_host_base}/#{@env.path.stub_pwd}/." #creates remote directory tree, this is not the usual function of u - when /[abhHNopwxXy]/; "#{self.remote_host_base}/#{@env.path.stub_pwd}/#{@fnb}/." - else "#{self.remote_host_base}/#{@env.path.stub_pwd}/." - end - #remote="#{self.remote_host_base}/#{@env.path.stub_pwd}/." - local_src=@source_path_src - remote_src="#{self.remote_host_base}/#{@env.path.stub_src}/." - src_txt=@opt.fnc - src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.zip') - if (local =~/\S/ and local !~/\/\//) and (remote =~/\S/ and remote !~/\/\//) and @@flag_remote==true and @opt.cmd !~/U/ - System_call.new(local,remote).scp - if FileTest.file?("#{local_src}/#{src_txt}") or FileTest.file?("#{local_src}/#{src_pod}") - System_call.new("#{local_src}/#{src_txt} #{local_src}/#{src_pod}",remote_src).scp - end - elsif @opt.cmd =~/U/ - puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ - puts "#{local} -> #{remote}" - if FileTest.file?("#{local_src}/#{src_doc}") or FileTest.file?("#{local_src}/#{src_doc}.zip") - puts "#{local_src}/#{src_doc}* -> #{remote_src}" + self.remote_host_base.each do |remote_conn| + local_gen=@source_path + remote_gen=case @opt.cmd + when /u/; "#{remote_conn[:name]}/#{@env.path.stub_pwd}/." #creates remote directory tree, this is not the usual function of u + when /[abhHNopwxXy]/; "#{remote_conn[:name]}/#{@env.path.stub_pwd}/#{@fnb}/." + else "#{remote_conn[:name]}/#{@env.path.stub_pwd}/." + end + #remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." + local_src=@source_path_src + remote_src="#{remote_conn[:name]}/#{@env.path.stub_src}/." + src_txt=@opt.fnc + src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.zip') + if (local_gen =~/\S/ and local_gen !~/\/\//) and (remote_gen =~/\S/ and remote_gen !~/\/\//) and @@flag_remote==true and @opt.cmd !~/U/ + System_call.new(local_gen,remote_gen).scp + if FileTest.file?("#{local_src}/#{src_txt}") or FileTest.file?("#{local_src}/#{src_pod}") + System_call.new("#{local_src}/#{src_txt} #{local_src}/#{src_pod}",remote_src).scp + end + elsif @opt.cmd =~/U/ + puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + puts "#{local_gen} -> #{remote_gen}" + if FileTest.file?("#{local_src}/#{src_doc}") or FileTest.file?("#{local_src}/#{src_doc}.zip") + puts "#{local_src}/#{src_doc}* -> #{remote_src}" + end + else + puts 'suspect scp request, ignored' + puts "#{local_gen} -> #{remote_gen} remote flag: #@@flag_remote" + puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ end - else - puts 'suspect scp request, ignored' - puts "#{local} -> #{remote} remote flag: #@@flag_remote" - puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ end end def rsync - local=@source_path - remote="#{self.remote_host_base}/#{@env.path.stub_pwd}/." - local_src=@source_path_src - remote_src="#{self.remote_host_base}/#{@env.path.stub_src}/." - src_txt=@opt.fnc - src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.zip') - if (local =~/\S/ and local !~/\/\//) and (remote =~/\S/ and remote !~/\/\//) and @@flag_remote==true and @opt.cmd !~/U/ - System_call.new(local,remote,@opt.cmd).rsync('--delete-after') - if FileTest.file?("#{local_src}/#{src_txt}") or FileTest.file?("#{local_src}/#{src_pod}") - System_call.new("#{local_src}/#{src_txt} #{local_src}/#{src_pod}",remote_src,@opt.cmd).rsync - end - elsif @opt.cmd =~/U/ - puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ - puts "#{local} -> #{remote}" - if FileTest.file?("#{local_src}/#{src_doc}") or FileTest.file?("#{local_src}/#{src_doc}.zip") - puts "#{local_src}/#{src_doc}* -> #{remote_src}" + self.remote_host_base.each do |remote_conn| + local_gen=@source_path + remote_gen="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." + local_src=@source_path_src + remote_src="#{remote_conn[:name]}/#{@env.path.stub_src}/." + src_txt=@opt.fnc + src_pod=@opt.fncb.gsub(/(\.ss[mt])(?:\.sst)?$/,'\1.zip') + if (local_gen =~/\S/ and local_gen !~/\/\//) and (remote_gen =~/\S/ and remote_gen !~/\/\//) and @@flag_remote==true and @opt.cmd !~/U/ + System_call.new(local_gen,remote_gen,@opt.cmd).rsync('--delete-after') + if FileTest.file?("#{local_src}/#{src_txt}") or FileTest.file?("#{local_src}/#{src_pod}") + System_call.new("#{local_src}/#{src_txt} #{local_src}/#{src_pod}",remote_src,@opt.cmd).rsync + end + elsif @opt.cmd =~/U/ + puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + puts "#{local_gen} -> #{remote_gen}" + if FileTest.file?("#{local_src}/#{src_doc}") or FileTest.file?("#{local_src}/#{src_doc}.zip") + puts "#{local_src}/#{src_doc}* -> #{remote_src}" + end + else + puts 'suspect rsync request, ignored' + puts "#{local_gen} -> #{remote_gen} remote flag: #@@flag_remote" + puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ end - else - puts 'suspect rsync request, ignored' - puts "#{local} -> #{remote} remote flag: #@@flag_remote" - puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ end end def scp_base #base site - local=@source_path - remote="#{remote_host_base}/#{@env.path.stub_pwd}/." - if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] and @@flag_remote==true and @opt.cmd !~/U/ - puts "begin scp_base: #{local} -> #{remote}" - System_call.new("#{local}/#{@env.path.style}/",remote).scp - elsif @opt.cmd =~/U/ - puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ - puts "begin scp_base: #{local} -> #{remote}" - puts "#{local}/#{@env.path.style}/ -> #{remote}" - else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + self.remote_host_base.each do |remote_conn| + local=@source_path + remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." + if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] and @@flag_remote==true and @opt.cmd !~/U/ + puts "begin scp_base: #{local} -> #{remote}" + System_call.new("#{local}/#{@env.path.style}/",remote).scp + elsif @opt.cmd =~/U/ + puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + puts "begin scp_base: #{local} -> #{remote}" + puts "#{local}/#{@env.path.style}/ -> #{remote}" + else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + end end end def scp_base_all #base site - local=@source_path - remote="#{remote_host_base}/#{@env.path.stub_pwd}/." - if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] and @@flag_remote==true and @opt.cmd !~/U/ - puts "begin scp_base_all: #{local} -> #{remote}" - System_call.new("#{local}/_sisu/image_sys/",remote).scp - System_call.new("#{local}/_sisu/image/",remote).scp - System_call.new("#{local}/#{@env.path.style}/",remote).scp - elsif @opt.cmd =~/U/ - puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ - puts "scp_base_all: #{local} -> #{remote}" - puts "#{local}/_sisu/image_sys/ -> #{remote}" - puts "#{local}/_sisu/image/ -> #{remote}" - puts "#{local}/#{@env.path.style}/ -> #{remote}" - else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + self.remote_host_base.each do |remote_conn| + local=@source_path + remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." + if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] and @@flag_remote==true and @opt.cmd !~/U/ + puts "begin scp_base_all: #{local} -> #{remote}" + System_call.new("#{local}/_sisu/image/",remote).scp + System_call.new("#{local}/_sisu/image_local/",remote).scp + System_call.new("#{local}/#{@env.path.style}/",remote).scp + elsif @opt.cmd =~/U/ + puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + puts "scp_base_all: #{local} -> #{remote}" + puts "#{local}/_sisu/image/ -> #{remote}" + puts "#{local}/_sisu/image_local/ -> #{remote}" + puts "#{local}/#{@env.path.style}/ -> #{remote}" + else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + end end end def rsync_base #base site - local=@source_path - remote="#{remote_host_base}/#{@env.path.stub_pwd}/." - if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] and @@flag_remote==true and @opt.cmd !~/U/ - #puts "begin rsync_base: #{local} -> #{remote}" - #System_call.new("#{local}/_sisu/image/",remote).rsync - #System_call.new("#{local}/_sisu/image_local/",remote).rsync - #System_call.new("#{local}/#{@env.path.style}/",remote).rsync - elsif @opt.cmd =~/U/ - puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ - puts "rsync_base: #{local} -> #{remote}" - puts "#{local}/_sisu/image_sys/ -> #{remote}" - puts "#{local}/_sisu/image/ -> #{remote}" - puts "#{local}/#{@env.path.style}/ -> #{remote}" - else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + self.remote_host_base.each do |remote_conn| + local=@source_path + remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." + if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] and @@flag_remote==true and @opt.cmd !~/U/ + #puts "begin rsync_base: #{local} -> #{remote}" + #System_call.new("#{local}/_sisu/image/",remote).rsync + #System_call.new("#{local}/_sisu/image_local/",remote).rsync + #System_call.new("#{local}/#{@env.path.style}/",remote).rsync + elsif @opt.cmd =~/U/ + puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + puts "rsync_base: #{local} -> #{remote}" + puts "#{local}/_sisu/image/ -> #{remote}" + puts "#{local}/_sisu/image_local/ -> #{remote}" + puts "#{local}/#{@env.path.style}/ -> #{remote}" + else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + end end end def rsync_base_sync #base site - local=@source_path - remote="#{remote_host_base}/#{@env.path.stub_pwd}/." - if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] and @@flag_remote==true and @opt.cmd !~/U/ - puts "begin rsync_base_sync: #{local} -> #{remote}" - System_call.new("#{local}/_sisu/image_sys/",remote).rsync('--delete-after') - System_call.new("#{local}/_sisu/image/",remote).rsync('--delete-after') - System_call.new("#{local}/#{@env.path.style}/",remote).rsync('--delete-after') - elsif @opt.cmd =~/U/ - puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ - puts "rsync_base_sync: #{local} -> #{remote}" - puts "#{local}/_sisu/image_sys/ -> #{remote}" - puts "#{local}/_sisu/image/ -> #{remote}" - puts "#{local}/#{@env.path.style}/ -> #{remote}" - else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + self.remote_host_base.each do |remote_conn| + local=@source_path + remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." + if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] and @@flag_remote==true and @opt.cmd !~/U/ + puts "begin rsync_base_sync: #{local} -> #{remote}" + System_call.new("#{local}/_sisu/image/",remote).rsync('--delete-after') + System_call.new("#{local}/_sisu/image_local/",remote).rsync('--delete-after') + System_call.new("#{local}/#{@env.path.style}/",remote).rsync('--delete-after') + elsif @opt.cmd =~/U/ + puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + puts "rsync_base_sync: #{local} -> #{remote}" + puts "#{local}/_sisu/image/ -> #{remote}" + puts "#{local}/_sisu/image_local/ -> #{remote}" + puts "#{local}/#{@env.path.style}/ -> #{remote}" + else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + end end end def rsync_sitemaps #sitemap directory - local="#@source_path/sitemapindex.xml" - remote="#{remote_host_base}/#{@env.path.stub_pwd}/." - if @@flag_remote - #if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] #and @@flag_remote==true and @opt.cmd !~/U/ - System_call.new(local,remote).rsync('--delete-after') - elsif @opt.cmd =~/U/ - puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ - puts "rsync_sitemaps: #{local} -> #{remote}" - else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + self.remote_host_base.each do |remote_conn| + local="#@source_path/sitemapindex.xml" + remote="#{remote_conn[:name]}/#{@env.path.stub_pwd}/." + if @@flag_remote + #if defined? @rc['permission_set']['remote_base_site'] and @rc['permission_set']['remote_base_site'] #and @@flag_remote==true and @opt.cmd !~/U/ + System_call.new(local,remote).rsync('--delete-after') + elsif @opt.cmd =~/U/ + puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + puts "rsync_sitemaps: #{local} -> #{remote}" + else puts "permission not granted #{__FILE__} #{__LINE__}" if @opt.cmd =~/M/ + end end end end @@ -2209,7 +2240,7 @@ WOK @fns=fns end def basefilename - m=/(.+?)\.(?:[_-]?sst|ssm)$/m + m=/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/m fnb=@fns[m,1] end def project -- cgit v1.2.3