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) | 
