From 9680068ed1eee6cab4367714213f8052145529b6 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Tue, 12 Aug 2014 00:11:35 -0400 Subject: v5 v6: hub, organisation & loose ends * tweak triggers * split file further * remove mod --- lib/sisu/v5/hub.rb | 314 ++++++++++++++++++----------------------------------- 1 file changed, 103 insertions(+), 211 deletions(-) (limited to 'lib/sisu/v5/hub.rb') diff --git a/lib/sisu/v5/hub.rb b/lib/sisu/v5/hub.rb index fed4ae55..68db1f13 100644 --- a/lib/sisu/v5/hub.rb +++ b/lib/sisu/v5/hub.rb @@ -67,6 +67,7 @@ module SiSU include SiSU_Env include SiSU_Screen require_relative 'hub_actions' # hub_actions.rb + require_relative 'hub_loop_markup_files' # hub_loop_markup_files.rb require_relative 'hub_options' # hub_options.rb require_relative 'dp' # dp.rb include SiSU_Param @@ -81,13 +82,13 @@ module SiSU end class HubMaster def initialize(argv,call_path) - begin #% select what to do (set options & start processing (files selected if any)) - opt=SiSU_Commandline::Options.new(argv,call_path) # command line selection of what to do, files & operations set - SiSU::Processing.new(opt).version_info - SiSU::Processing.new(opt).actions_without_files # do it - SiSU::Processing.new(opt).actions_on_files # do it + begin + opt=SiSU_Commandline::Options.new(argv,call_path) + SiSU::Processing.new(opt).actions_without_files + SiSU::Processing.new(opt).actions_on_files + SiSU::Processing.new(opt).actions_without_files_post rescue - selection=(opt ? opt.selection : '') + selection=(opt ? opt.selections.src : '') SiSU_Screen::Ansi.new(selection,$!,$@).rescue do __LINE__.to_s + ':' + __FILE__ end @@ -96,115 +97,6 @@ module SiSU end end end - class HubClose - def initialize(call_path) - begin - @env=SiSU_Env::InfoEnv.new - rescue - ensure - if FileTest.directory?(@env.processing_path.processing) \ - and @env.processing_path.processing_base_tmp =~/^\/tmp\/\S+/ - FileUtils::cd(@env.processing_path.processing_base_tmp) do - FileUtils::rm_rf('.') - end - end - Dir.chdir(call_path) - end - end - end - class OptionLoopFiles - attr_reader :opt - def initialize(opt) - @opt=opt - @r=Px[:lng_lst_rgx] - end - def loop_files_on_given_option - @opt.files.each_with_index do |fno,i| - @opt.fno,@opt.fns=fno,fno - @opt.f_pth=@opt.f_pths[i] - if fno !~/\.-sst$/ - @opt.pth=@opt.paths[i] - @opt.lng=@opt.lngs[i] - end - @@pwd=@opt.pth - @opt.pth=@opt.f_pths[i][:pth] - @opt.lng=@opt.f_pths[i][:lng] - Dir.chdir(@opt.f_pth[:pth]) #watch - SiSU_Env::FilenameLanguageCodeInsert.new(@opt,@opt.lng).language_code_insert # ... track - @env=SiSU_Env::InfoEnv.new(fno) - yield - end - end - def loop_files_on_given_option_bundle - @files_bundle={} - @opt.files.each_with_index do |fno,i| - fn_base_bundle=fno.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') - unless @files_bundle[fn_base_bundle] - @files_bundle[fn_base_bundle]={ status: :todo } - end - end - @opt.files.each_with_index do |fno,i| - fn_base_bundle=fno.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') - unless @files_bundle[fn_base_bundle][:status] == :done - @files_bundle[fn_base_bundle][:status] = :done - @opt.fns=fno - @opt.fno=fno - @opt.f_pth=@opt.f_pths[i] - if fno !~/\.-sst$/ - @opt.pth=@opt.paths[i] - @opt.lng=@opt.lngs[i] - end - @@pwd=@opt.pth - @opt.pth=@opt.f_pths[i][:pth] - @opt.lng=@opt.f_pths[i][:lng] - Dir.chdir(@opt.f_pth[:pth]) #watch - @env=SiSU_Env::InfoEnv.new(fno) - yield - else next - end - end - end - def manifest_on_files_translated - number_of_files={} - @opt.files.each_with_index do |fns,i| - fn=fns.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') - (number_of_files[fn].is_a?(Array)) \ - ? (number_of_files[fn] << i) - : (number_of_files.store(fn,[i])) - end - files_translated_idx=[] - number_of_files.each do |x| - if x[1].length > 1 - files_translated_idx << x[1] - end - end - if files_translated_idx.flatten.length > 1 - SiSU_Screen::Ansi.new( - @opt.act[:color_state][:set], - 'Manifest re-run on (currently generated) translated files', - '' - ).grey_title_hi unless @opt.act[:quiet][:set] ==:on - files_translated_idx.flatten.each do |i| - @opt.fns=@opt.files[i] - @opt.f_pth=@opt.f_pths[i] - if @opt.fns =~/\.-sst$/ - @opt.pth=Dir.pwd - @opt.lng='en' - elsif @opt.fno =~/\.txz$/ - @opt.pth=@opt.f_pths[i][:pth] - @opt.lng=@opt.f_pths[i][:lng] - else - @opt.pth=@opt.f_pths[i][:pth] - @opt.lng=@opt.f_pths[i][:lng] - end - @@pwd=@opt.pth - Dir.chdir(@opt.pth) #watch - @env=SiSU_Env::InfoEnv.new(@opt.fns) - yield - end - end - end - end class Processing begin require 'fileutils' @@ -239,43 +131,50 @@ module SiSU @remove_faulty_markup_files_array.join(',') end end + def do_each_file_loop_check_and_perform_selected_actions(opt) + actions=SiSU_Hub_Actions::HubActions.new(opt) + actions.outputs.each_file.abstract_objects? + actions.outputs.each_file.qrcode? + actions.outputs.each_file.hash_digests? + actions.outputs.each_file.text? + actions.outputs.each_file.html? + actions.outputs.each_file.xhtml? + actions.outputs.each_file.xml? + actions.outputs.each_file.pdf? + actions.outputs.each_file.man_or_info? + actions.outputs.each_file.sqlite_discrete? + actions.outputs.each_file.manifest? + end def do_each_file_loop_options - @opt.files.each_with_index do |fno,i| - @opt.fno=fno - @opt.fns=fno. - gsub(/(?:https?|file):\/\/\S+\/(\S+)\.sst$/,'\1.-sst'). - gsub(/\.ssm$/,'.ssm.sst') - @opt.f_pth=@opt.f_pths[i] - if @opt.fns !~/\.-sst$/ - @opt.pth=@opt.f_pths[i][:pth] - @opt.lng=@opt.f_pths[i][:lng] - else - @opt.pth=Dir.pwd - @opt.lng='en' - end - unless @opt.pth.nil? - @@pwd=@opt.pth - Dir.chdir(@opt.pth) #watch + if @opt.files.length > 0 + @opt.files.each_with_index do |fno,i| + @opt.fno=fno + @opt.fns=fno. + gsub(/(?:https?|file):\/\/\S+\/(\S+)\.sst$/,'\1.-sst'). + gsub(/\.ssm$/,'.ssm.sst') + @opt.f_pth=@opt.f_pths[i] + if @opt.fns !~/\.-sst$/ + @opt.pth=@opt.f_pths[i][:pth] + @opt.lng=@opt.f_pths[i][:lng] + else + @opt.pth=Dir.pwd + @opt.lng='en' + end + unless @opt.pth.nil? + @@pwd=@opt.pth + Dir.chdir(@opt.pth) #watch + end + #@env=SiSU_Env::InfoEnv.new(@opt.fns) + do_each_file_loop_check_and_perform_selected_actions(@opt) end - @env=SiSU_Env::InfoEnv.new(@opt.fns) - actions=SiSU_Hub_Actions::HubActions.new(@opt) - actions.outputs.each_file.abstract_objects? - actions.outputs.each_file.qrcode? - actions.outputs.each_file.hash_digests? - actions.outputs.each_file.text? - actions.outputs.each_file.html? - actions.outputs.each_file.xhtml? - actions.outputs.each_file.xml? - actions.outputs.each_file.pdf? - actions.outputs.each_file.man_or_info? - actions.outputs.each_file.sqlite_discrete? - actions.outputs.each_file.manifest? + else + do_each_file_loop_check_and_perform_selected_actions(@opt) end end def do_loop_files_on_given_option_pre begin if @opt.act[:zap][:set]==:on #% --zap, -Z - OptionLoopFiles.new(@opt).loop_files_on_given_option do + SiSU_Hub_Loops::OptionLoopFiles.new(@opt).loop_files_on_given_option do require_relative 'zap' SiSU_Zap::Source.new(@opt).read # -Z zap.rb end @@ -285,25 +184,38 @@ module SiSU end def do_loop_files_on_given_option_post actions=SiSU_Hub_Actions::HubActions.new(@opt) - actions.outputs.loop_files.share_source? - actions.outputs.loop_files.run_termsheet? - actions.outputs.loop_files.sql? + if defined? actions.outputs.loop_files.share_source? + actions.outputs.loop_files.share_source? + end + if defined? actions.outputs.loop_files.run_termsheet? + actions.outputs.loop_files.run_termsheet? + end + if defined? actions.outputs.loop_files.sql? + actions.outputs.loop_files.sql? + end SiSU_Hub_Actions::Operations.new.counter - actions.outputs.loop_files.manifest? - actions.outputs.loop_files.sitemaps? - actions.outputs.loop_files.urls? - end - def version_info - if @opt.act[:version_info][:set]==:on - SiSU_Env::InfoAbout.new(@opt).sisu_version + if defined? actions.outputs.loop_files.manifest? + actions.outputs.loop_files.manifest? + end + if defined? actions.outputs.loop_files.sitemaps? + actions.outputs.loop_files.sitemaps? + end + if defined? actions.outputs.loop_files.urls? + actions.outputs.loop_files.urls? end end def actions_without_files actions=SiSU_Hub_Actions::HubActions.new(@opt) + actions.report.version_info? actions.prepare.site? - actions.prepare.remote_site? actions.prepare.sql? end + def actions_without_files_post + actions=SiSU_Hub_Actions::HubActions.new(@opt) + actions.prepare.remote_site? + actions.prepare.search_form? + actions.prepare.webrick? + end def actions_on_files if @opt.act[:profile][:set]==:on begin @@ -314,71 +226,51 @@ module SiSU end end actions=SiSU_Hub_Actions::HubActions.new(@opt) - actions.outputs.each_file.harvest? #check + actions.outputs.each_file.harvest? actions.outputs.init? do_loop_files_on_given_option_pre do_each_file_loop_options #remove_skipped_files_if_any_from_processing_files_array # NEEDS WORK do_loop_files_on_given_option_post - print_error_message_if_files_skipped - actions.outputs.sql? #check location - if @opt.f_pths.length > 0 - if (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - @msg,@msgs="\tsisu -W [to start ruby web-server on output directory]\n",nil - end - if (@opt.act[:verbose][:set]==:on \ - || @opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on \ - || @opt.act[:urls_selected][:set]==:on \ - || @opt.act[:urls_all][:set]==:on) - @tell.call.print_brown unless @opt.files.join.empty? - end - if defined? @@env.processing_path.processing \ - and @@env.user \ - and FileTest.directory?(@@env.processing_path.processing) \ - and @@env.processing_path.processing =~/#{@@env.user}$/ #clean temporary processing directory of content as is located in public area - if @@env.processing_path.processing_base_tmp =~/^\/tmp\/\S+/ - FileUtils::cd(@@env.processing_path.processing_base_tmp) do - FileUtils::rm_rf('.') unless @opt.act[:maintenance][:set] ==:on - end + #print_error_message_if_files_skipped + if (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on) + @msg,@msgs="\tsisu -W [to start ruby web-server on output directory]\n",nil + end + if (@opt.act[:verbose][:set]==:on \ + || @opt.act[:verbose_plus][:set]==:on \ + || @opt.act[:maintenance][:set]==:on \ + || @opt.act[:urls_selected][:set]==:on \ + || @opt.act[:urls_all][:set]==:on) + @tell.call.print_brown unless @opt.files.join.empty? + end + if defined? @@env.processing_path.processing \ + and @@env.user \ + and FileTest.directory?(@@env.processing_path.processing) \ + and @@env.processing_path.processing =~/#{@@env.user}$/ + #clean tmp processing dir of content as is located in public area + if @@env.processing_path.processing_base_tmp =~/^\/tmp\/\S+/ + FileUtils::cd(@@env.processing_path.processing_base_tmp) do + FileUtils::rm_rf('.') unless @opt.act[:maintenance][:set] ==:on end end - elsif @opt.f_pths.length == 0 - STDERR.puts %{requested action requires valid sisu markup file [filename (.sst .ssm)] or wildcard (that includes a valid filename)} - if (@opt.act[:verbose_plus][:set]==:on \ - || @opt.act[:maintenance][:set]==:on) - SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).warn(:fuchsia) - end - else #% sisu help refer to man pages - actions.prepare(@opt).site? - unless done==:ok - #SiSU_Env::InfoAbout.new(@opt).sisu_about - end end - @opt.files.each do |fns| - if FileTest.file?(fns) - @opt.fns=fns - unless @opt.fns =~ /(?:\.(?:(?:-|ssm\.)?sst|ssm|ssp|sx[sdn]\.xml|termsheet.rb)|\S+?\.ss[mt]\.(?:txz|zip)|sisupod\.(?:txz|zip)?|\S+?\.ssp)$/ - if @opt.selections.str=~/--pg/ - elsif @opt.fns=~/\.kdi$/ \ - and @opt.mod.inspect =~/--(?:convert(?:-from)?|from)[=-]kdi/ - elsif @opt.fns=~/\.sx[sdn]\.xml$/ \ - and @opt.mod.inspect =~/--(?:(?:convert(?:-from)?|from)[=-])?(?:xml2sst|sxml)/ - elsif @opt.fns=~/\.ssi$/ \ - and @opt.mod.inspect =~/--identify/ - else SiSU_Hub_Actions::Operations.new(@opt).not_recognised - end - end - if @opt.fns =~/\.ssm\.sst$/ \ - and @opt.selections.str !~/[S_M]/ # rework necessary, revist, the _ flag is a hack, to keep ._sst files - @msg,@msgs='temporary file removed',nil - @tell.call.warn unless @opt.act[:quiet][:set]==:on - File.unlink(@opt.fns) if File.exist?(@opt.fns) #CONSIDER + end + end + class HubClose + def initialize(call_path) + begin + @env=SiSU_Env::InfoEnv.new + rescue + ensure + if FileTest.directory?(@env.processing_path.processing) \ + and @env.processing_path.processing_base_tmp =~/^\/tmp\/\S+/ + FileUtils::cd(@env.processing_path.processing_base_tmp) do + FileUtils::rm_rf('.') end - else #SiSU::Operations.new(fns,'html').not_found end + Dir.chdir(call_path) end end end -- cgit v1.2.3