# encoding: utf-8 =begin * Name: SiSU ** Description: documents, structuring, processing, publishing, search *** system environment, resource control and configuration details ** 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/se_createsite.rb;hb=HEAD] =end module SiSU_Create_Site require_relative 'constants' # constants.rb require_relative 'html_parts' # html_parts.rb require_relative 'utils' # utils.rb require_relative 'utils_screen_text_color' # utils_screen_text_color.rb require_relative 'se_info_env' # se_info_env.rb begin require 'fileutils' include FileUtils::Verbose rescue LoadError SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). error('fileutils NOT FOUND (LoadError)') end class CreateSite < SiSU_Info_Env::InfoEnv # se_info_env.rb require_relative 'css' # css.rb include SiSU_Style def initialize(opt) @opt=opt @env=SiSU_Env::InfoEnv.new @init=SiSU_Env::GetInit.new @home,@pwd=ENV['HOME'],ENV['PWD'] #@pwd=Dir.pwd @rc=SiSU_Env::GetInit.new.sisu_yaml.rc @home_set=SiSU_Proj_HTML::Home.new end def create_default_sisu_homepage(action=:none) if action==:none puts %{ place your homepages in directory:\n "#{@env.path.rc}/home/*.html"\n (no action taken)} else # turned off, unless something other than :none passed puts %{ place your homepages in directory:\n "#{@env.path.rc}/home/*.html"\n (in order to replace default sisu homepage)} filename_homepage= @env.path.webserv + '/' \ + @env.path.base_markup_dir_stub + '/index.html' filename_home_toc= @env.path.webserv + '/' \ + @env.path.base_markup_dir_stub + '/toc.html' file_homepage=File.new(filename_homepage,'w') file_home_toc=File.new(filename_home_toc,'w') file_homepage << @home_set.homepage file_home_toc << @home_set.homepage file_homepage.close file_home_toc.close end end def homepage home_pages_manually_created=Dir.glob("#{@env.path.rc}/home/*.html") FileUtils::mkdir_p("#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}") \ unless FileTest.directory?("#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}") if home_pages_manually_created.length > 0 home_pages_manually_created.each do |homepage| FileUtils.cp(homepage,"#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}") end else create_default_sisu_homepage(:none) # :default end end def cp_images(src_path,dest_path) if FileTest.directory?(src_path) FileUtils::cd(src_path) source=Dir.glob("*.{png,jpg,gif,ico}") FileUtils::mkdir_p(dest_path) unless FileTest.directory?(dest_path) FileUtils::chmod(0755,dest_path) source.each do |i| if FileTest.file?(i) FileUtils::cp(i,"#{dest_path}/#{i}") FileUtils::chmod(0644,"#{dest_path}/#{i}") else STDERR.puts %{\t*WARN* did not find image - "#{i}" [#{__FILE__}:#{__LINE__}]} end end FileUtils::cd(@pwd) else STDERR.puts %{\t*WARN* did not find - #{src_path} [#{__FILE__}:#{__LINE__}]} end end def cp_local_images src=@pwd + '/_sisu/image' dest= @env.path.webserv + '/' \ + @env.path.base_markup_dir_stub + '/_sisu/image' cp_images(src,dest) if FileTest.directory?(src) end def cp_external_images src=@env.processing_path.processing + '/' \ + 'external_document/image' dest= @env.path.webserv + '/' \ + @env.path.base_markup_dir_stub + '/' \ + '_sisu/image_external' if FileTest.directory?(src) cp_images(src,dest) if FileTest.directory?(src) end end def cp_webserver_images src=@env.path.image_source dest_arr=[ "#{@env.path.webserv}/_sisu/image", "#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image", ] dest_arr.each do |dest| cp_images(src,dest) if FileTest.directory?(src) end end def cp_webserver_images_local #this should not have been necessary src=@env.path.image_source dest= @env.path.webserv + '/' \ + @env.path.base_markup_dir_stub + '/' \ + '_sisu/image' cp_images(src,dest) if FileTest.directory?(src) end def cp_base_images #fix images src=SiSU_is.path_base_system_data? + '/image' dest_arr=[ "#{@env.path.webserv}/_sisu/image_sys", "#{@env.path.webserv}/#{@env.path.base_markup_dir_stub}/_sisu/image_sys" ] dest_arr.each do |dest| cp_images(src,dest) if FileTest.directory?(src) end end def cp_css FileUtils::mkdir_p("#{@env.path.output}/#{@env.path.style}") \ unless FileTest.directory?("#{@env.path.output}/#{@env.path.style}") css_path=[ '/etc/sisu/css', "#{@home}/.sisu/css", "#{@pwd}/_sisu/css", ] #BROKEN if defined? @rc['permission_set']['css_modify'] \ and @rc['permission_set']['css_modify'] SiSU_Screen::Ansi.new( @opt.selections.str, "*WARN* modify is css set to: #{@rc['permission_set']['css_modify']}" ).warn if @opt.act[:verbose_plus][:set]==:on \ or @opt.act[:maintenance][:set]==:on css_path.each do |x| if FileTest.directory?(x) FileUtils::cd(x) source=Dir.glob("*.{css}") source.each do |i| if FileTest.file?(i) FileUtils::cp( i, @env.path.output + '/' + @env.path.style ) else STDERR.puts %{\t*WARN* did not find css - "#{i}" [#{__FILE__}:#{__LINE__}]} end end FileUtils::cd(@pwd) end end else SiSU_Screen::Ansi.new( @opt.selections.str, "*WARN* modify css is not set or is set to: false" ).warn if @opt.act[:verbose_plus][:set]==:on \ or @opt.act[:maintenance][:set]==:on end fn_css=SiSU_Env::CSS_Default.new css=SiSU_Style::CSS.new path_style="#{@env.path.output}/#{@env.path.style}" FileUtils::mkdir_p(path_style) \ unless FileTest.directory?(path_style) if @opt.act[:site_init][:set]==:on \ or not FileTest.file?("#{path_style}/#{fn_css.homepage}") style=File.new("#{path_style}/#{fn_css.homepage}",'w') style << css.homepage style.close end if @opt.act[:site_init][:set]==:on \ or not FileTest.file?("#{path_style}/#{fn_css.html_tables}") style=File.new("#{path_style}/#{fn_css.html_tables}",'w') style << css.html_tables style.close end if @opt.act[:site_init][:set]==:on \ or not FileTest.file?("#{path_style}/#{fn_css.html}") style=File.new("#{path_style}/#{fn_css.html}",'w') style << css.html style.close end if @opt.act[:site_init][:set]==:on \ or not FileTest.file?("#{path_style}/#{fn_css.harvest}") style=File.new("#{path_style}/#{fn_css.harvest}",'w') style << css.harvest style.close end if @opt.act[:site_init][:set]==:on \ or (@opt.act[:xml_sax][:set]==:on \ and not FileTest.file?("#{path_style}/#{fn_css.xml_sax}")) style=File.new("#{path_style}/#{fn_css.xml_sax}",'w') style << css.xml_sax style.close end if @opt.act[:site_init][:set]==:on \ or (@opt.act[:xml_dom][:set]==:on \ and not FileTest.file?("#{path_style}/#{fn_css.xml_dom}")) style=File.new("#{path_style}/#{fn_css.xml_dom}",'w') style << css.xml_dom style.close end if @opt.act[:site_init][:set]==:on \ or (@opt.act[:xml_docbook_book][:set] == :on \ and not FileTest.file?("#{path_style}/#{fn_css.xml_docbook}")) style=File.new("#{path_style}/#{fn_css.xml_docbook}",'w') style << css.xml_docbook style.close end if @opt.act[:site_init][:set]==:on \ or (@opt.act[:xhtml][:set] == :on \ and not FileTest.file?("#{path_style}/#{fn_css.xhtml}")) style=File.new("#{path_style}/#{fn_css.xhtml}",'w') style << css.xhtml style.close end end end end __END__