diff options
Diffstat (limited to 'bin')
-rw-r--r-- | bin/sisu | 256 | ||||
-rw-r--r-- | bin/sisu-misc-utils | 228 |
2 files changed, 398 insertions, 86 deletions
@@ -1,6 +1,6 @@ #!/usr/bin/env ruby # encoding: utf-8 -#SiSU: copyright (C) 1997 - 2014 Ralph Amissah; License GPL 3, see appended program information +#SiSU: copyright (C) 1997 - 2015 Ralph Amissah; License GPL 3, see appended program information class Orient require 'singleton' include Singleton @@ -18,17 +18,23 @@ class Orient def default stable end + def current + 'current' + end + def next + 'next' + end self end def sisu_called_from_directory @@sisu_called_from_directory ||= Dir.pwd end - def sisu_run_from - if processing.called_as == processing.file_full_path \ - and File.dirname(processing.file_full_path) != Config::CONFIG['bindir'] + def sisu_run_from? + if processing.called_as == processing.sisu_runtime_path \ + and File.dirname(processing.sisu_runtime_path) != RbConfig::CONFIG['bindir'] :full_path_to_sisu_bin_in_sisu_dir_tree - elsif processing.file_full_path =~/\/gems\// \ - and processing.file_full_path \ + elsif processing.sisu_runtime_path =~/\/gems\// \ + and processing.sisu_runtime_path \ =~ /\/sisu-[#{version.stable}#{version.unstable}]\.(?:\d+|[a-z])\.(?:\d+|[a-z])\// :gem_install else @@ -45,7 +51,7 @@ class Orient def argv_str argv.inspect end - def file_full_path + def sisu_runtime_path __FILE__ end def stable @@ -57,6 +63,12 @@ class Orient def default 'v' + version.default end + def current + 'current' + end + def next + 'develop' + end def stable_bin_file_regex %r{\bsisu#{version.stable}$} end @@ -70,15 +82,15 @@ class Orient %r{\/sisu-#{version.unstable}\.(?:\d+|[a-z])\.(?:\d+|[a-z])\/} end def stable_modifier_regex - %r{"(?:--v#{version.stable}|--current|--stable)"} + %r{"(?:--v#{version.stable}|--current|--stable|--release)"} end def unstable_modifier_regex - %r{"(?:--v#{version.unstable}|--current|--stable)"} + %r{"(?:--v#{version.unstable}|--next|--unstable|--dev)"} end self end def sisu_lib - "sisu/#{select_version_check}" + "sisu/#{branch_name_}" end def sisu_path_lib if sisu_path_specified_lib \ @@ -88,11 +100,33 @@ class Orient end end def sisu_version_info_path - "#{sisu_path_base_system_data}/#{select_version_check}/v/version.yml" + "#{sisu_path_base_system_data}/version/#{branch_name?}.yml" + end + def branch_name_ + if sisu_run_from? == :full_path_to_sisu_bin_in_sisu_dir_tree \ + or sisu_run_from? == :system_install + case processing.called_as + when processing.stable_bin_file_regex then processing.current + when processing.unstable_bin_file_regex then processing.next + else + case processing.argv_str + when processing.stable_modifier_regex then processing.current + when processing.unstable_modifier_regex then processing.next + else processing.current + end + end + elsif sisu_run_from? == :gem_install + case processing.sisu_runtime_path + when processing.stable_gem_regex then processing.current + when processing.unstable_gem_regex then processing.next + else processing.current + end + else processing.current + end end - def select_version_check - if sisu_run_from == :full_path_to_sisu_bin_in_sisu_dir_tree \ - or sisu_run_from == :system_install + def branch_version_ + if sisu_run_from? == :full_path_to_sisu_bin_in_sisu_dir_tree \ + or sisu_run_from? == :system_install case processing.called_as when processing.stable_bin_file_regex then processing.stable when processing.unstable_bin_file_regex then processing.unstable @@ -100,39 +134,58 @@ class Orient case processing.argv_str when processing.stable_modifier_regex then processing.stable when processing.unstable_modifier_regex then processing.unstable - else processing.default + else processing.stable end end - elsif sisu_run_from == :gem_install - case processing.file_full_path + elsif sisu_run_from? == :gem_install + case processing.sisu_runtime_path when processing.stable_gem_regex then processing.stable when processing.unstable_gem_regex then processing.unstable - else processing.default + else processing.stable end - else processing.default + else processing.stable end end def paths_set - if sisu_run_from == :system_install \ + if sisu_run_from? == :system_install \ and processing.called_as \ - =~ /^#{Config::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/ + =~ /^#{RbConfig::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/ :set_path_system - elsif sisu_run_from == :full_path_to_sisu_bin_in_sisu_dir_tree \ + elsif sisu_run_from? == :full_path_to_sisu_bin_in_sisu_dir_tree \ and processing.called_as \ - !~ /^#{Config::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/ \ + !~ /^#{RbConfig::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/ \ && File.expand_path(processing.called_as) \ =~ /bin\/sisu[#{version.stable}#{version.unstable}]?$/ \ && FileTest.file?(processing.called_as) :set_dir_tree_full_path - elsif sisu_run_from==:gem_install + elsif sisu_run_from? ==:gem_install :set_gem_path else nil end end + def git_version + if sisu_run_from? == :full_path_to_sisu_bin_in_sisu_dir_tree \ + && FileTest.file?('/usr/bin/git') \ + && FileTest.directory?(processing.sisu_runtime_path.gsub(/\/bin\/sisu\S*/,'/.git')) + bin_base=processing.sisu_runtime_path.gsub(/\/bin\/sisu\S*/,'') + pwd=Dir.pwd + Dir.chdir(bin_base) + x=`git describe --long --tags 2>&1`.strip. + gsub(/^[a-z_-]*([0-9.]+)/,'\1'). + gsub(/([^-]*-g)/,'r\1'). + gsub(/-/,'.') + x=(x=~/^[0-9]+\.[0-9]+\.[0-9]+\.r[0-9]+\.g[0-9a-f]{7}/) \ + ? x + : nil + Dir.chdir(pwd) + x + else nil + end + end def sisu_path_base case paths_set when :set_path_system - Config::CONFIG['datadir'] + '/sisu' + RbConfig::CONFIG['datadir'] + '/sisu' when :set_dir_tree_full_path File.expand_path(processing.called_as). sub(/\/bin\/sisu[#{version.stable}#{version.unstable}]?$/,'') @@ -144,7 +197,7 @@ class Orient def sisu_path_base_system_data case paths_set when :set_path_system - Config::CONFIG['datadir'] + '/sisu' + RbConfig::CONFIG['datadir'] + '/sisu' when :set_dir_tree_full_path File.expand_path(processing.called_as). sub(/\/bin\/sisu[#{version.stable}#{version.unstable}]?$/,'/data/sisu') @@ -155,7 +208,7 @@ class Orient end def sisu_path_specified_lib if (processing.called_as \ - !~ /^#{Config::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/) + !~ /^#{RbConfig::CONFIG['bindir']}\/sisu[#{version.stable}#{version.unstable}]?$/) File.expand_path(processing.called_as). sub(/bin\/sisu[#{version.stable}#{version.unstable}]?$/,'lib') else nil @@ -171,17 +224,50 @@ class Orient self end def sisu_is - { - run_from: sisu_run_from, - version_dir: select_version_check, - 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: language_list.codes, - language_list_regex: language_list.regex, - called_from: sisu_called_from_directory, - } + def runtime_path? + sisu_runtime_path + end + def runtime_type? + sisu_run_from? + end + def called_from? + sisu_called_from_directory + end + def branch_name? + branch_name_ + end + def branch_version? + branch_version_ + end + def path_base? + sisu_path_base + end + def path_base_system_data? + sisu_path_base_system_data + end + def path_lib? + sisu_path_lib + end + def version_info_path? + sisu_version_info_path + end + def language_list? + language_list.codes + end + def language_list_regex? + language_list.regex + end + def git_version_info? + git_version + end + def runtime? + { + call_path: called_from?, + runtime_path: runtime_path?, + runtime_type: runtime_type?, + } + end + self end def get_processing_info def sortout @@ -223,7 +309,7 @@ class Orient self end def control - require "#{sisu_is[:path_lib]}/hub" + require "#{sisu_is.path_lib?}/hub" sisu_called_from_directory begin if get_processing_info.processing_files.length > 0 @@ -236,7 +322,7 @@ class Orient Dir.chdir(markup_dir) $sisu_document_markup_directory_base_fixed_path= Dir.pwd.gsub(/\/(?:#{language_list.regex})$/,'') - SiSU::HubMaster.new(argv_sub,sisu_called_from_directory) + SiSU::HubMaster.new(argv_sub,sisu_is.runtime?) elsif markup_dir =~/https?:/ markup_file.each do |mf| (FileTest.file?(mf)) \ @@ -247,7 +333,7 @@ class Orient $sisu_document_markup_directory_base_fixed_path= Dir.pwd.gsub(/\/(?:#{language_list.regex})$/,'') argv_sub=command_line_modifiers + markup_file - SiSU::HubMaster.new(argv_sub,sisu_called_from_directory) + SiSU::HubMaster.new(argv_sub,sisu_is.runtime?) else p "Error directory specified #{markup_dir} not found" end ensure @@ -259,7 +345,7 @@ class Orient $sisu_document_markup_directory=Dir.pwd.gsub(/\/$/,'') $sisu_document_markup_directory_base_fixed_path= Dir.pwd.gsub(/(^|\/)(?:#{language_list.regex})$/,'') - SiSU::HubMaster.new(processing.argv,sisu_called_from_directory) + SiSU::HubMaster.new(processing.argv,sisu_is.runtime?) end rescue ensure @@ -285,10 +371,10 @@ rescue #% - 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']} + ruby version: #{RbConfig::CONFIG['RUBY_PROGRAM_VERSION']}p#{RbConfig::CONFIG['PATCHLEVEL']} + ruby named: #{RbConfig::CONFIG['ruby_version']} + rubylib: #{RbConfig::CONFIG['rubylibdir']} + rubylib local: #{RbConfig::CONFIG['sitelibdir']} gem dir: #{Gem.dir} gem path: #{Gem.path} } @@ -299,58 +385,56 @@ rescue #% - end __END__ - * Name: SiSU - - * Description: a framework for document structuring, publishing and search +* Name: SiSU - * Author: Ralph Amissah +** Description: documents, structuring, processing, publishing, search - * 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. +** Author: Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> - * License: GPL 3 or later: +** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah, + All Rights Reserved. - SiSU, a framework for document structuring, publishing and search +** License: GPL 3 or later: - Copyright (C) Ralph Amissah + SiSU, a framework for document structuring, publishing and search - 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. + Copyright (C) Ralph Amissah - 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. + 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. - You should have received a copy of the GNU General Public License along with - this program. If not, see <http://www.gnu.org/licenses/>. + 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. - 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> + You should have received a copy of the GNU General Public License along with + this program. If not, see <http://www.gnu.org/licenses/>. - <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + 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 + <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> - * Hompages: - <http://www.jus.uio.no/sisu> - <http://www.sisudoc.org> +** SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system - * Download: - <http://www.sisudoc.org/sisu/en/SiSU/download.html> +** 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=bin/sisu;hb=HEAD> +** Download: + <http://www.sisudoc.org/sisu/en/SiSU/download.html> - * Ralph Amissah - <ralph@amissah.com> - <ralph.amissah@gmail.com> +** Git + <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> + <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=bin/sisu;hb=HEAD> diff --git a/bin/sisu-misc-utils b/bin/sisu-misc-utils new file mode 100644 index 00000000..47d8f32b --- /dev/null +++ b/bin/sisu-misc-utils @@ -0,0 +1,228 @@ +#!/usr/bin/env ruby +begin + require 'thor' +rescue LoadError + puts 'thor (package ruby-thor) not found' +end +require 'find' +require 'fileutils' + include FileUtils +require 'pathname' +require 'rbconfig.rb' +module SiSUconf + class LanguageCodes + def language_list + def codes + %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] + end + def regex + codes.join('|') + end + self + end + end + class DetermineLibsPath + def version + def stable + '5' + end + def unstable + '6' + end + self + end + def processing + def called_as + $0 + #$called_as + end + def called_as_exe + File.basename(called_as) + end + def called_as_exe_strip_current_develop + File.basename(called_as).gsub(/-(?:current|develop)/,'') + end + def argv + $* + #$argv + end + def argv_str + argv.inspect + end + def file_full_path + __FILE__ + end + def current + 'current' + end + def next + 'develop' + end + def stable_bin_file_regex + %r{\bsisu#{version.stable}$} + end + def unstable_bin_file_regex + %r{\bsisu#{version.unstable}$} + end + def stable_modifier_regex + %r{"(?:--v#{version.stable}|--current|--stable)"} + end + def unstable_modifier_regex + %r{"(?:--v#{version.unstable}|--next|--unstable)"} + end + def lib_filename + 'sisu_thor_lib' + end + self + end + def sisu_run_from? + if processing.called_as == processing.file_full_path \ + and File.dirname(processing.file_full_path) != RbConfig::CONFIG['bindir'] + :full_path_to_sisu_bin_in_sisu_dir_tree + elsif processing.file_full_path =~/\/gems\// \ + and processing.file_full_path \ + =~ /\/#{called_as_exe_strip_current_develop}(?:-(?:current|develop))\.(?:\d+|[a-z])\.(?:\d+|[a-z])\// + :gem_install + else + :system_install + end + end + def branch_name_ + if sisu_run_from? == :full_path_to_sisu_bin_in_sisu_dir_tree \ + or sisu_run_from? == :system_install + case processing.called_as + when processing.stable_bin_file_regex then processing.current + when processing.unstable_bin_file_regex then processing.next + else + case processing.argv_str + when processing.stable_modifier_regex then processing.current + when processing.unstable_modifier_regex then processing.next + else processing.current + end + end + elsif sisu_run_from? == :gem_install + case processing.file_full_path + when processing.stable_gem_regex then processing.current + when processing.unstable_gem_regex then processing.next + else processing.current + end + else processing.current + end + end + def sisu_path_specified_lib + if (processing.called_as \ + !~ /^#{RbConfig::CONFIG['bindir']}\/#{called_as_exe_strip_current_develop}(?:-(?:current|develop))?$/) + File.expand_path(processing.called_as). + sub(/bin\/#{called_as_exe_strip_current_develop}(?:-(?:current|develop))?$/,'lib') + else nil + end + end + def sisu_lib + "sisu/#{branch_name_}" + end + def sisu_path_lib + if sisu_path_specified_lib \ + && FileTest.file?("#{sisu_path_specified_lib}/#{sisu_lib}/#{lib_filename}.rb") + "#{sisu_path_specified_lib}/#{sisu_lib}" + else sisu_lib + end + end + end + class Configure < Thor + $SiSU_Language_Codes=LanguageCodes.new + paths= DetermineLibsPath.new + #p "#{paths.sisu_path_lib}/#{paths.processing.lib_filename}" + require "#{paths.sisu_path_lib}/#{paths.processing.lib_filename}" # sisu_thor_lib.rb + @@source=@@targets=nil + include SiSU_Po4a_Actions + class_option :verbose, :type => :boolean +# rake help clean default distclean make manpage readme rebuild + desc 'po4a', + 'place SiSU translations under po4a management' \ + + 'assist with having sisu markup files managed by po4a' \ + + 'create configuration files, and language directories and' \ + + 'populate them with po4a pot & po files for translation and' \ + + 'from those (as translated) create translated sisu markup' \ + + '.ssm .sst & .ssi files in corresponding language sub-directories' \ + + '*WARNING* creates, destroys, overwrites directories not managed by po4a' + options \ + :help => :boolean, + :clean => :boolean, + #:default => :boolean, + :distclean => :boolean, + :make => :boolean, + :lang_source => :string, + :lang_targets => :array, + :manpage => :boolean, + :readme => :boolean, + :rebuild => :boolean, + :current => :string, + :next => :string, + :stable => :string, + :unstable => :string + def po4a + @@source=source=if options[:lang_source] \ + and not options[:lang_source].empty? + options[:lang_source] + else nil + end + @@targets=targets=if options[:lang_targets] + options[:lang_targets] + else nil + end + language.translation_languages_selected(targets) + language.source_language_selected(source) + if options[:help] + notice.project_help + end + if options[:clean] + notice.default(:clean) + project.clean + end + #if options[:default] + # notice.project_help + #end + if options[:distclean] + notice.default(:distclean) + project.distclean + end + if options[:make] + notice.default(:make) + project.make + end + if options[:manpage] + generate.manpage + end + if options[:readme] + generate.readme + end + if options[:rebuild] + notice.default(:rebuild) + project.distclean + project.make + end + end + end +end +begin + require 'rbconfig' + $called_as,$argv=$0,$* + SiSUconf::Configure.start(ARGV) +rescue +end +__END__ + +** Description: + +** Homepage: <http://www.jus.uio.no/sisu/SiSU> + <http://search.sisudoc.org> +** Download: <http://www.jus.uio.no/sisu/download> + +** Copyright: (C) 2007 - 2015 Ralph Amissah + +** License: GPL3+ + +** Ralph Amissah <ralph@amissah.com> + Ralph Amissah <ralph.amissah@gmail.com> + +#% manual settings, edit/update as required (note current default settings are obtained from sisu version yml file) |