# encoding: utf-8 =begin * Name: SiSU ** Description: documents, structuring, processing, publishing, search *** hub, perform selected actions ** Author: Ralph Amissah [ralph@amissah.com] [ralph.amissah@gmail.com] ** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Ralph Amissah, All Rights Reserved. ** License: GPL 3 or later: SiSU, a framework for document structuring, publishing and search Copyright (C) Ralph Amissah This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see [http://www.gnu.org/licenses/]. If you have Internet connection, the latest version of the GPL should be available at these locations: [http://www.fsf.org/licensing/licenses/gpl.html] [http://www.gnu.org/licenses/gpl.html] ** SiSU uses: * Standard SiSU markup syntax, * Standard SiSU meta-markup syntax, and the * Standard SiSU object citation numbering and system ** Hompages: [http://www.jus.uio.no/sisu] [http://www.sisudoc.org] ** Git [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary] [http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/hub_actions.rb;hb=HEAD] =end module SiSU_Hub_Actions class HubActions require_relative 'utils_composite' # utils_composite.rb include SiSU_Composite_Doc_Utils # composite doc, .ssm, extract all related insert files, array of filenames test def initialize(opt) @opt=opt end def report def version_info? if @opt.act[:version_info][:set]==:on SiSU_Env::InfoAbout.new(@opt).sisu_version end end def version_number_git? if @opt.act[:version_info][:set]==:on \ || @opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], ' ' + SiSU_is.git_version_info? ).grey end end def version_dir? if @opt.act[:version_info][:set]==:on \ || @opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], ' ' + File.dirname(__FILE__) ).grey end end def version_info_extra? if @opt.act[:version_info][:set]==:on \ || @opt.act[:verbose][:set]==:on \ || @opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on if SiSU_is.git_version_info? SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], ' ' + File.dirname(__FILE__) + \ ' vcr: ' + SiSU_is.git_version_info? ).grey else SiSU_Screen::Ansi.new( @opt.act[:color_state][:set], ' ' + File.dirname(__FILE__) ).grey end end end self end def prepare def site? if @opt.act[:site_init][:set]==:on #% --init-site, -C initialize/configure require_relative 'conf' #% --init-site, -C initialize/configure SiSU_Initialize::Source.new(@opt).read if @opt.act[:rsync][:set]==:on if @opt.selections.str =~/--init(?:ialize)?=site/ \ and @opt.selections.str =~/RZ/ SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_rsync_match else SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_rsync end elsif @opt.act[:scp][:set]==:on if @opt.selections.str =~/--init(?:ialize)?=site/ \ and @opt.selections.str =~/CCr/ SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_all else SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site end end end end def remote_site? if @opt.act[:site_init][:set]==:on if @opt.act[:site_init][:set]==:on #% --init-site, -C initialize/configure #require_relative 'conf' #% --init-site, -C initialize/configure #SiSU_Initialize::Source.new(@opt).read #if @opt.act[:rsync][:set]==:on # if @opt.selections.str =~/--init(?:ialize)?=site/ \ # and @opt.selection =~/RZ/ # SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_rsync_match # else SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_rsync # end #elsif @opt.act[:scp][:set]==:on # if @opt.selections.str =~/--init(?:ialize)?=site/ \ # and @opt.selection =~/CCr/ # SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site_all # else SiSU_Hub_Actions::Operations.new(@opt).remote_put_base_site # end #end end end end def sql? if @opt.act[:psql_createdb][:set]==:on \ or @opt.act[:psql_create][:set]==:on \ or @opt.act[:psql_drop][:set]==:on done=:ok if @opt.act[:psql][:set]==:on require_relative 'dbi' SiSU_DBI::SQL.new(@opt).connect end end if @opt.act[:sqlite_createdb][:set]==:on \ or @opt.act[:sqlite_create][:set]==:on \ or @opt.act[:sqlite_drop][:set]==:on done=:ok if @opt.act[:sqlite][:set]==:on require_relative 'dbi' SiSU_DBI::SQL.new(@opt).connect end end end def search_form? if @opt.act[:sample_search_form][:set]==:on #% --sample-search-form, -F cgi sample search form SiSU_Hub_Actions::Operations.new(@opt).cgi end end def webrick? if @opt.act[:webrick][:set]==:on #% --webrick, -W webrick SiSU_Hub_Actions::Operations.new(@opt).webrick end end self end def outputs def each_file def abstract_objects? if @opt.act[:ao][:set]==:on #% --ao --dal, -m if @opt.f_pths.length > 0 unless @opt.act[:po4a_shelf][:set]==:on # --po4a-shelf if @opt.fno =~ /\.ssm$/ require_relative 'ao_composite' # ao_composite.rb #pre-processing SiSU_Assemble::Composite.new(@opt).read end require_relative 'ao' # ao.rb SiSU_AO::Source.new(@opt).read end else msg='document abstraction request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def qrcode? if @opt.act[:qrcode][:set]==:on #% --qrcode, -Q if @opt.f_pths.length > 0 require_relative 'qrcode' # qrcode.rb SiSU_QRcode::Source.new(@opt).read else msg='qrcode request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def hash_digests? if @opt.act[:hash_digests][:set]==:on #% --hash-digests, -N digest tree if @opt.f_pths.length > 0 require_relative 'digests' # digests.rb SiSU_DigestView::Source.new(@opt).read else msg='hash digest request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def text? if @opt.act[:txt][:set]==:on #% --txt, -t -a if @opt.f_pths.length > 0 require_relative 'txt_plain' # txt_plain.rb SiSU_Txt_Plain::Source.new(@opt).read else msg='text request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:txt_textile][:set]==:on #% --textile if @opt.f_pths.length > 0 require_relative 'txt_textile' #txt_textile.rb SiSU_Txt_Textile::Source.new(@opt).read else msg='textile request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:txt_asciidoc][:set]==:on #% --asciidoc if @opt.f_pths.length > 0 require_relative 'txt_asciidoc' # txt_asciidoc.rb SiSU_Txt_AsciiDoc::Source.new(@opt).read else msg='asciidoc request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:txt_markdown][:set]==:on #% --markdown if @opt.f_pths.length > 0 require_relative 'txt_markdown' # txt_markdown.rb SiSU_Txt_Markdown::Source.new(@opt).read else msg='markdown request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:txt_rst][:set]==:on #% --rst, --rest if @opt.f_pths.length > 0 require_relative 'txt_rst' # txt_rst.rb SiSU_Txt_rST::Source.new(@opt).read else msg='rst request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:txt_orgmode][:set]==:on #% --orgmode if @opt.f_pths.length > 0 require_relative 'txt_orgmode' # txt_orgmode.rb SiSU_Txt_OrgMode::Source.new(@opt).read else msg='orgmode request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def html? if @opt.act[:html][:set]==:on #% --html, -h if @opt.f_pths.length > 0 require_relative 'html' # html.rb SiSU_HTML::Source.new(@opt).read else msg='html request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end else if @opt.act[:html_seg][:set]==:on #% --html-seg if @opt.f_pths.length > 0 require_relative 'html' # html.rb SiSU_HTML::Source.new(@opt).read else msg='html seg request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:html_scroll][:set]==:on #% --html-scroll if @opt.f_pths.length > 0 require_relative 'html' # html.rb SiSU_HTML::Source.new(@opt).read else msg='html scroll request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end if @opt.act[:concordance][:set]==:on #% --concordance, -w if @opt.f_pths.length > 0 require_relative 'html_concordance' # html_concordance.rb SiSU_Concordance::Source.new(@opt).read else msg='concordance request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def json? if @opt.act[:json][:set]==:on #% --js, -J if @opt.f_pths.length > 0 require_relative 'json' # json.rb SiSU_JSON::Source.new(@opt).read else msg='json request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def xhtml? if @opt.act[:xhtml][:set]==:on #% --xhtml, -b if @opt.f_pths.length > 0 require_relative 'xhtml' # xhtml.rb SiSU_XHTML::Source.new(@opt).read else msg='xhtml request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:epub][:set]==:on #% --epub, -e if @opt.f_pths.length > 0 require_relative 'xhtml_epub2' # xhtml_epub2.rb SiSU_XHTML_EPUB2::Source.new(@opt).read else msg='epub request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def xml? if @opt.act[:odt][:set]==:on #% --odt, -o if @opt.f_pths.length > 0 require_relative 'xml_odf_odt' # xml_odf_odt.rb SiSU_XML_ODF_ODT::Source.new(@opt).read else msg='odt request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:xml_scaffold_structure_sisu][:set]==:on #% --xml-scaffold --xml-scaffold-sisu if @opt.f_pths.length > 0 require_relative 'xml_scaffold_structure_sisu' # xml_scaffold_structure_sisu.rb SiSU_XML_Scaffold_Structure_Sisu::Source.new(@opt).read else msg='xml scaffold request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:xml_scaffold_structure_collapse][:set]==:on #% --xml-scaffold-collapse if @opt.f_pths.length > 0 require_relative 'xml_scaffold_structure_collapsed' # xml_scaffold_structure_collapsed.rb SiSU_XML_Scaffold_Structure_Collapse::Source.new(@opt).read else msg='xml scaffold request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:xml_docbook_book][:set]==:on #% --xml-docbook if @opt.f_pths.length > 0 require_relative 'xml_docbook5' # xml_docbook5.rb SiSU_XML_Docbook_Book::Source.new(@opt).read else msg='docbook request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:xml_fictionbook][:set]==:on #% --xml-fictionbook if @opt.f_pths.length > 0 require_relative 'xml_fictionbook2' # xml_fictionbook2.rb SiSU_XML_Fictionbook::Source.new(@opt).read else msg='fictionbook request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:xml_sax][:set]==:on #% --xml-sax, -x if @opt.f_pths.length > 0 require_relative 'xml_sax' # xml_sax.rb SiSU_XML_SAX::Source.new(@opt).read else msg='xml sax request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:xml_dom][:set]==:on #% --xml-dom, -X if @opt.f_pths.length > 0 require_relative 'xml_dom' # xml_dom.rb SiSU_XML_DOM::Source.new(@opt).read else msg='xml dom request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def pdf? if @opt.act[:pdf][:set]==:on \ or @opt.act[:pdf_p][:set]==:on \ or @opt.act[:pdf_l][:set]==:on #% --pdf-l --pdf, -p if @opt.f_pths.length > 0 require_relative 'texpdf' # texpdf.rb SiSU_TeX::Source.new(@opt).read else msg='pdf request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def man_or_info? if @opt.act[:manpage][:set]==:on #% --manpage, -i if @opt.f_pths.length > 0 require_relative 'manpage' # manpage.rb SiSU_Manpage::Source.new(@opt).read else msg='manpage request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end if @opt.act[:texinfo][:set]==:on #% --texinfo, -I if @opt.f_pths.length > 0 require_relative 'texinfo' # texinfo.rb SiSU_TexInfo::Source.new(@opt).read else msg='texinfo request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def sqlite_discrete? if @opt.act[:sqlite_discrete][:set]==:on #% --sqlite, -d if @opt.f_pths.length > 0 require_relative 'dbi_discrete' # dbi_discrete.rb SiSU_DBI_Discrete::SQL.new(@opt).build else msg='sqlite (discrete) request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def po4a_make? if @opt.act[:po4a_sst_ao_sst][:set]==:on #% --po4a-ao if @opt.f_pths.length > 0 require_relative 'src_po4a_sst_ao_sst' SiSU_SStm_AO_SStm::Source.new(@opt).read_process_src_files # src_po4a_sst_ao_sst.rb else msg='sst request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end end def elasticsearch? if @opt.act[:elasticsearch][:set]==:on #% --elastic, -x if @opt.f_pths.length > 0 require_relative 'json_elastic' # json_elastic.rb SiSU_Elastic::Source.new(@opt).read else msg='easticsearch request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def manifest? if @opt.act[:manifest][:set]==:on #% --manifest, -y if @opt.f_pths.length > 0 begin require_relative 'html_manifest' # html_manifest.rb ((@opt.act[:sisupod][:set]==:on \ || @opt.act[:share_source][:set]==:on \ || @opt.act[:po4a_sstm][:set]==:on) \ && @opt.f_pths.length < 2 ) \ ? nil : SiSU_Manifest::Source.new(@opt).read rescue end else msg='manifest request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end def harvest? if @opt.act[:harvest][:set]==:on #% --harvest if @opt.f_pths.length > 0 require_relative 'html_harvest' # html_harvest.rb SiSU_Harvest::Source.new(@opt).read else msg='harvest request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow). mark(msg) else puts msg end end end end self end def loop_files def share_source? if @opt.act[:sisupod][:set]==:on \ or @opt.act[:share_source][:set]==:on \ or @opt.act[:po4a_sstm][:set]==:on \ or @opt.act[:git][:set]==:on begin if @opt.f_pths.length > 0 require_relative 'src_shared' SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Source::SiSUpodSource.new(@opt).read end else msg='share markup source request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end if @opt.act[:sisupod][:set]==:on #% --sisupod, -S if @opt.f_pths.length > 0 require_relative 'src_sisupod_make' # src_sisupod_make.rb begin SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option_bundle do SiSU_Doc::Source.new(@opt).sisupod_tar_xz end ensure end else msg='sisupod (share markup source) request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end if @opt.act[:git][:set]==:on #% --git, -g if @opt.f_pths.length > 0 require_relative 'git' # git.rb begin SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Git::Source.new(@opt).read end ensure SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option_bundle do SiSU_Git::Source.new(@opt).git_commit end end else msg='git request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end if (@opt.act[:sisupod][:set]==:on \ || @opt.act[:share_source][:set]==:on \ || @opt.act[:po4a_sstm][:set]==:on) \ and @opt.act[:manifest][:set]==:on #% --manifest, -y if @opt.f_pths.length > 0 require_relative 'html_manifest' # html_manifest.rb begin ensure SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option_bundle do SiSU_Manifest::Source.new(@opt).read end end else msg='manifest request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end ensure if @opt.f_pths.length > 0 env=SiSU_Env::InfoEnv.new(@opt.fns) path_pod=env.processing_path.processing_sisupod(@opt).paths unless @opt.act[:maintenance][:set]==:on FileUtils::rm_rf("#{path_pod[:sisupod]}/*") \ if FileTest.directory?(path_pod[:sisupod]) end else #SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). # mark('*** request requires sisu markup files') end end end if @opt.act[:share_source][:set]==:on if @opt.f_pths.length > 0 require_relative 'src_sisupod_sstm' # src_sisupod_sstm.rb begin ensure SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option_bundle do SiSU_Markup::Source_Sisupod.new(@opt).read end end else msg='share markup source request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end if @opt.act[:po4a_sstm][:set]==:on #% --po4a-sst if @opt.f_pths.length > 0 require_relative 'src_po4a_sstm' begin SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Markup::Source_Po4a.new(@opt).read # src_po4a_sstm.rb end ensure end else msg='sst request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end if @opt.act[:po4a_sst_ao_sst][:set]==:on #% --po4a-ao if @opt.f_pths.length > 0 require_relative 'src_po4a_sst_ao_sst' begin SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_SStm_AO_SStm::Source.new(@opt).read_setup # src_po4a_sst_ao_sst.rb end ensure end else msg='sst request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end if @opt.act[:po4a_shelf][:set]==:on #% --po4a-shelf if @opt.f_pths.length > 0 require_relative 'src_po4a_shelf' begin SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Po4a::Source.new(@opt).read # src_po4a_shelf.rb end ensure end else msg='src_po4a_shelf request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end if @opt.act[:images][:set]==:on #% --images, -j if @opt.f_pths.length > 0 require_relative 'shared_images' SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Images::Source.new(@opt).read # shared_images.rb end else msg='place images request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end end def run_termsheet? #broken, revisit later if @opt.selections.str =~/--termsheet/ #% -T termsheet/standard form #fix later if @opt.f_pths.length > 0 @opt.files.each do |fns| if FileTest.file?(fns) @opt.fns=fns case @opt.fns when /\.(termsheet.rb)$/ SiSU_Hub_Actions::Operations.new(@opt).termsheet else #print "not processed --> ", fns, "\n" end else SiSU_Hub_Actions::Operations.new(@opt).not_found end end else msg='process termsheet request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end end def sql? if @opt.act[:psql][:set]==:on #% --pg, -D if @opt.f_pths.length > 0 require_relative 'dbi' SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_DBI::SQL.new(@opt).connect # dbi.rb end else msg='pgsql request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end if @opt.act[:sqlite][:set]==:on #% --sqlite, -d if @opt.f_pths.length > 0 require_relative 'dbi' SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_DBI::SQL.new(@opt).connect # dbi.rb end else msg='sqlite request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end end def manifest? if @opt.act[:manifest][:set]==:on #% --manifest, -y if @opt.f_pths.length > 1 require_relative 'html_manifest' SiSU_Hub_Loops::OptionLoopFiles.new(@opt).manifest_on_files_translated do SiSU_Manifest::Source.new(@opt).read # html_manifest.rb end end end end def sitemaps? if @opt.act[:sitemap][:set]==:on #% --sitemap, -Y if @opt.f_pths.length > 0 require_relative 'sitemaps' SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Sitemaps::Source.new(@opt).read # sitemaps.rb end end end end def remote_placement? if @opt.act[:harvest][:set] !=:on if @opt.act[:scp][:set]==:on #% -r copy to remote server if @opt.f_pths.length > 0 require_relative 'remote' # remote.rb SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Remote::Put.new(@opt).scp end end end if @opt.act[:rsync][:set]==:on #% -R copy to remote server if @opt.f_pths.length > 0 require_relative 'remote' # remote.rb SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Remote::Put.new(@opt).rsync end end end else end end def urls? if @opt.act[:urls_selected][:set]==:on #% --urls if @opt.f_pths.length > 0 require_relative 'urls' SiSU_Hub_Loops::OptionLoopFiles.new(@opt). loop_files_on_given_option do SiSU_Urls::Source.new(@opt).read #% urls.rb end else msg='urls request requires sisu markup files' if (@opt.act[:verbose_plus][:set]==:on \ || @opt.act[:maintenance][:set]==:on) SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:cyan). mark(msg) else puts msg end end end end self end def init? SiSU_Env::InfoProcessingFlag.new if @opt.act[:ao][:set]==:on \ or @opt.act[:maintenance][:set]==:on #% --maintenance, -M env=SiSU_Env::InfoEnv.new(@opt.fns) path={} path[:css]=env.path.output + '/_sisu/css' path[:xml]=env.path.output + '/_sisu/xml' path[:xsd]=path[:xml] + '/xsd' path[:xsd]=path[:xml] + '/rnc' path[:xsd]=path[:xml] + '/rng' re_p3=/(sisupod(?:\.txz)?|\S+?\.ss[mt]\.txz|[^\/]+?\.ssp)$/ unless @opt.files.join(',') =~ re_p3 #do not mix pods with source markup files in command line if @opt.act[:maintenance][:set] ==:on $VERBOSE=false #debug $VERBOSE=true end end re_p2=/(sisupod(?:\.zip)?|\S+?\.ss[mt]\.zip)$/ unless @opt.files.join(',') =~ re_p2 #do not mix pods with source markup files in command line if @opt.act[:maintenance][:set] ==:on $VERBOSE=false #debug $VERBOSE=true end end end if @opt.act[:ao][:set]==:on @retry_count= -1 begin @get_s,@get_p,@get_pl=[],[],[] re_s=/(\S+?\.-sst)$/ re_p3=/((?:https?|file):\/\/\S+?(?:\/\S+?\.ss[mt]\.txz|sisupod(?:\.txz)?|\.ssp))/ re_pl3=/^(\/\S+?\.ss[mt]\.txz)/ @opt.files.each do |fns| if fns =~re_s @get_s << @opt.f_pths[0][:url] end if fns =~re_p3 @get_p << re_p3.match(fns)[1] if re_p3 end if fns =~re_pl3 @get_pl << re_pl3.match(fns)[1] if re_p3 end end if @get_s.length > 0 #% remote markup file .sst require_relative 'remote' # remote.rb SiSU_Remote::Get.new(@opt,@get_s).fns SiSU_Hub_Actions::Operations.new.counter end if @get_p.length > 0 #% remote sisupod require_relative 'remote' # remote.rb SiSU_Remote::Get.new(@opt,@get_p).sisupod end rescue SiSU_Errors::Rescued.new($!,$@,@opt,@fns).location do __LINE__.to_s + ':' + __FILE__ end @retry_count +=1 retry unless @retry_count > 1 ensure end end end self end end class Operations @@n_do=0 def initialize(opt='') @opt=opt @cX=SiSU_Screen::Ansi.new(@opt).cX end def counter @@n_do=0 end def remote_put_base_site_rsync # -CR SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:cyan) \ if @opt.act[:maintenance][:set] ==:on require_relative 'remote' # remote.rb SiSU_Remote::Put.new(@opt).rsync_base end def remote_put_base_site_rsync_match # -CCRZ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:cyan) \ if @opt.act[:maintenance][:set] ==:on require_relative 'remote' # remote.rb SiSU_Remote::Put.new(@opt).rsync_base_sync end def remote_put_base_site # -Cr SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:cyan) \ if @opt.act[:maintenance][:set] ==:on require_relative 'remote' # remote.rb SiSU_Remote::Put.new(@opt).scp_base end def remote_put_base_site_all # -CCr SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:cyan) \ if @opt.act[:maintenance][:set] ==:on require_relative 'remote' # remote.rb SiSU_Remote::Put.new(@opt).scp_base_all end def cgi # -F require_relative 'cgi' # cgi.rb SiSU_CGI::SearchSQL.new(@opt).read end def termsheet # -t system("sisu_termsheet #{@opt.selections.str} #{@opt.fns}\n") @@n_do=@@n_do+1 SiSU_Screen::Ansi.new( @opt.selections.str,@@n_do, 'Termsheet(s) processed' ).term_sheet_title unless @opt.act[:quiet][:set] ==:on end def webrick # -W prt=SiSU_Env::InfoEnv.new(@fns).port.webrick_port puts %{#{@cX.blue}<<#{@cX.off}#{@cX.green}Start Webrick web server on port: #{prt}#{@cX.off}#{@cX.blue}>> #{@cX.off*2} } require_relative 'webrick' SiSU_Webserv::WebrickStart.new end def not_found puts "\n#{@cX.fuchsia}FILE NOT FOUND:#{@cX.off} << #{@opt.fns} >> - requested #{@opt.selections.str} processing skipped\n" end def convert_name_message(fns,type,i,o,rune) %{\nIn filename: "#{@cX.fuchsia}#{fns}#{@cX.off}" << #{type} >> #{@cX.fuchsia}is apre 0.36 markup filename.#{@cX.off} #{@cX.brown}Please rename your file.#{@cX.off}\n\tAs of sisu-0.37, SiSU markup files with #{@cX.brown}the extensions #{i} should be re-named #{o}#{@cX.off}\n\tif you have the program called 'rename' installed, the following rune should do the trick:\n\t\t#{rune}\n\talternatively try:\n\t\tsisu --convert --36to37 #{fns}\n\trequested #{@opt.selections.str} processing skipped\n} end def not_recognised case @opt.fns when /(\.s[123])$/ type=@opt.fns.gsub(/\S+?(#{$1})/,'\1') rune=%q{rename 's/\.s[123]$/\.sst/' *.s{1,2,3}} puts convert_name_message(@opt.fns,type,'.s1 .s2 and .s3','.sst',rune) when /(\.r[123])$/ type=@opt.fns.gsub(/\S+?(#{$1})/,'\1') rune=%q{rename 's/\.r[123]$/\.ssm/' *.r{1,2,3}} puts convert_name_message(@opt.fns,type,'.r1 .r2 and .r3','.sst',rune) puts %{\n\tNote also that you will need to change the names of the files called/required\n\twithin the document text to build the composite document\n\t\t.s1 .s2 .s3 should be .sst \n\t\t.si should be .ssi\n\trequested #{@opt.selections.str} processing skipped\n} when /(\.ssi)$/ puts "\n#{@cX.fuchsia}component filetype:#{@cX.off} << #{@opt.fns} >> - is not a processed filetype, (it may be used as a component of a .ssm markup file)\n\trequested #{@opt.selections.str} processing skipped\n" else puts "\n#{@cX.fuchsia}FILETYPE NOT RECOGNISED:#{@cX.off} << #{@opt.fns} >> - is not a recognized filetype,\n\trequested #{@opt.selections.str} processing skipped\n" end end end end __END__