#!/usr/bin/env ruby # encoding: utf-8 #SiSU: copyright (C) 1997 - 2014 Ralph Amissah; License GPL 3, see appended program information begin def require_hub_path(sisu_path_specified_lib_) if sisu_path_specified_lib_ \ && FileTest.file?("#{sisu_path_specified_lib_}/#{@sisu_lib}/hub.rb") "#{sisu_path_specified_lib_}/#{@sisu_lib}" else @sisu_lib end end def select_version_check(instructions) case instructions when /"(?:--v4|--current|--stable)"/ then @version[:stable] when /"(?:--v5|--next|--dev)"/ then @version[:unstable] else @version[:default] end end #% sisu branch $VERBOSE=nil argv=$* @sisu_called_from_directory=Dir.pwd require 'rubygems' @version={ stable: 'v4', unstable: 'v5', } @version[:default]=@version[:stable] if $0 == __FILE__ \ and File.dirname(__FILE__) != Config::CONFIG['bindir'] sisu_run_from_= :full_path_to_sisu_bin_in_sisu_dir_tree sisu_version_dir_=case $0 when /\bsisu4$/ then @version[:stable] when /\bsisu5$/ then @version[:unstable] else select_version_check(argv.inspect) end elsif __FILE__ =~/\/gems\// \ and __FILE__ =~/\/sisu-[45]\.(?:\d+|[a-z])\.(?:\d+|[a-z])\// sisu_run_from_=:gem_install sisu_version_dir_=case __FILE__ when /\/sisu-4\.(?:\d+|[a-z])\.(?:\d+|[a-z])\// then @version[:stable] when /\/sisu-5\.(?:\d+|[a-z])\.(?:\d+|[a-z])\// then @version[:unstable] else @version[:default] end else sisu_run_from_=:system_install sisu_version_dir_=case $0 when /\bsisu4$/ then @version[:stable] when /\bsisu5$/ then @version[:unstable] else select_version_check(argv.inspect) end end #% $0 File.expand_path($0) sisu_path_base=if sisu_run_from_ == :system_install \ and $0 =~ /^#{Config::CONFIG['bindir']}\/sisu[45]?$/ sisu_path_base_system_data=Config::CONFIG['datadir'] + '/sisu' Config::CONFIG['datadir'] + '/sisu' # system install more widely distributed elsif sisu_run_from_ == :full_path_to_sisu_bin_in_sisu_dir_tree \ and $0 !~ /^#{Config::CONFIG['bindir']}\/sisu[45]?$/ \ && File.expand_path($0) =~/bin\/sisu[45]?$/ \ && FileTest.file?($0) sisu_path_base_system_data=File.expand_path($0).sub(/\/bin\/sisu[45]?$/,'/data/sisu') File.expand_path($0).sub(/\/bin\/sisu[45]?$/,'') elsif sisu_run_from_==:gem_install sisu_path_base_system_data=Gem::Specification.find_by_name("sisu").gem_dir + '/data/sisu' Gem::Specification.find_by_name("sisu").gem_dir else nil end @sisu_lib="sisu/#{sisu_version_dir_}" sisu_path_specified_lib_=($0 !~ /^#{Config::CONFIG['bindir']}\/sisu[45]?$/) \ ? File.expand_path($0).sub(/bin\/sisu[45]?$/,'lib') : nil sisu_version_info_path_="#{sisu_path_base_system_data}/#{sisu_version_dir_}/v/version.yml" sisu_path_lib="#{require_hub_path(sisu_path_specified_lib_)}" lng_lst_ = %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it ja ko la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi zh] SiSU_is={ run_from: sisu_run_from_, version_dir: sisu_version_dir_, path_base: sisu_path_base, path_base_system_data: sisu_path_base_system_data, path_lib: sisu_path_lib, version_info_path: sisu_version_info_path_, language_list: lng_lst_, } #% $* require "#{SiSU_is[:path_lib]}/hub" lng_lst_rgx=SiSU_is[:language_list].join('|') argv_sub_files={} argv_sub_mods=[] argv.each do |x| if x =~/^-+/ argv_sub_mods << x elsif x =~/\.ss[tm]/ if x =~/\// markup_path,markup_file =(/(\S+\/)((?:#{lng_lst_rgx})?[^\/]+)/).match(x)[1,2] if not argv_sub_files[markup_path] argv_sub_files[markup_path]=[] end argv_sub_files[markup_path] << markup_file else if not argv_sub_files['./'] argv_sub_files['./']=[] end argv_sub_files['./'] << x end end end if argv_sub_files.length > 0 argv_sub_files.each_pair do |markup_dir,markup_file| $sisu_document_markup_directory=markup_dir.gsub(/\/$/,'') argv_sub=argv_sub_mods + markup_file if FileTest.directory?(markup_dir) system("cd #{markup_dir}") Dir.chdir(markup_dir) $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/\/(?:#{lng_lst_rgx})$/,'') SiSU::HubMaster.new(argv_sub) Dir.chdir(@sisu_called_from_directory) system("cd #{@sisu_called_from_directory}") elsif markup_dir =~/https?:/ markup_file.each do |mf| (FileTest.file?(mf)) \ ? (puts 'requested remote file already exists in current directory ' + Dir.pwd + ' using ' + mf) : (system("wget #{markup_dir}/#{mf}")) end $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/\/(?:#{lng_lst_rgx})$/,'') argv_sub=argv_sub_mods + markup_file SiSU::HubMaster.new(argv_sub) else p "Error directory specified #{markup_dir} not found" end end else $sisu_document_markup_directory=Dir.pwd.gsub(/\/$/,'') $sisu_document_markup_directory_base_fixed_path=Dir.pwd.gsub(/(^|\/)(?:#{lng_lst_rgx})$/,'') SiSU::HubMaster.new(argv) end rescue STDERR.puts 'ERROR' STDERR.puts $! STDERR.puts $@ require 'rbconfig' require 'rubygems' puts %{ #{%x{ruby -v}.strip.to_s} #{RUBY_VERSION} ruby version: #{Config::CONFIG['RUBY_PROGRAM_VERSION']}p#{Config::CONFIG['PATCHLEVEL']} ruby named: #{Config::CONFIG['ruby_version']} rubylib: #{Config::CONFIG['rubylibdir']} rubylib local: #{Config::CONFIG['sitelibdir']} gem dir: #{Gem.dir} gem path: #{Gem.path} } system(%{echo " system RUBYPATH: ${RUBYPATH} system RUBYLIB: ${RUBYLIB} "}) end __END__ * Name: SiSU * Description: a framework for document structuring, publishing and search * Author: Ralph Amissah * Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 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 . If you have Internet connection, the latest version of the GPL should be available at these locations: * SiSU uses: * Standard SiSU markup syntax, * Standard SiSU meta-markup syntax, and the * Standard SiSU object citation numbering and system * Hompages: * Download: * Git * Ralph Amissah