#!/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: ** Download: ** Copyright: (C) 2007 - 2015 Ralph Amissah ** License: GPL3+ ** Ralph Amissah Ralph Amissah #% manual settings, edit/update as required (note current default settings are obtained from sisu version yml file)