diff options
Diffstat (limited to 'lib/sisu/v3/options.rb')
| -rw-r--r-- | lib/sisu/v3/options.rb | 356 | 
1 files changed, 299 insertions, 57 deletions
| diff --git a/lib/sisu/v3/options.rb b/lib/sisu/v3/options.rb index 89efb0a6..a1a448e6 100644 --- a/lib/sisu/v3/options.rb +++ b/lib/sisu/v3/options.rb @@ -61,11 +61,11 @@ module SiSU_commandline    require "pathname"    require_relative 'sysenv'                             # sysenv.rb    class Options -    attr_accessor :cmd,:mod,:f_pths,:files,:paths,:f_pth,:pth,:fns,:fnb,:fnc,:fncb,:what +    attr_accessor :cmd,:mod,:act,:f_pths,:files,:paths,:f_pth,:pth,:fns,:fnb,:fnc,:fncb,:lng,:what      def initialize(a)        @a=a        @cmd,@f_pth,@pth,@fns,@fnb,@fnc,@fncb,@what='','','','','','','','','' -      @f_pths,@files,@paths,@mod=[],[],[],[] +      @f_pths,@files,@paths,@mod,@act=Array.new(5){[]}        @env=SiSU_Env::Info_env.new        r=Px[:lng_lst].join('|')        #r.gsub!(/\|en\|/,'|') @@ -102,44 +102,27 @@ module SiSU_commandline      end      def init        a=@a -      c,w,s='','','' -      m,f,pth,z,ca=[],[],[],[],[] -      shortcut=SiSU_Env::Info_processing_flag.new -      a.each do |x| -        y=case x -        when /0/ -          (x=~/^-1\S+/) \ -          ? x.gsub(/^-0(\S+)/,shortcut.cf_0 + ' -\1') \ -          : x.gsub(/^-0/,shortcut.cf_0 + ' ') -        when /1/ -          (x=~/^-1\S+/) \ -          ? x.gsub(/^-1(\S+)/,shortcut.cf_1 + ' -\1') \ -          : x.gsub(/^-1/,shortcut.cf_1 + ' ') -        when /2/ -          (x=~/^-2\S+/) \ -          ? x.gsub(/^-2(\S+)/,shortcut.cf_2 + ' -\1') \ -          : x.gsub(/^-2/,shortcut.cf_2 + ' ') -        when /3/ -          (x=~/^-3\S+/) \ -          ? x.gsub(/^-3(\S+)/,shortcut.cf_3 + ' -\1') \ -          : x.gsub(/^-3/,shortcut.cf_3 + ' ') -        when /4/ -          (x=~/^-4\S+/) \ -          ? x.gsub(/^-4(\S+)/,shortcut.cf_4 + ' -\1') \ -          : x.gsub(/^-4/,shortcut.cf_4 + ' ') -        when /5/ -          (x=~/^-5\S+/) \ -          ? x.gsub(/^-5(\S+)/,shortcut.cf_5 + ' -\1') \ -          : x.gsub(/^-5/,shortcut.cf_5 + ' ') -        when /6/ -          (x=~/^-6\S+/) \ -          ? x.gsub(/^-6(\S+)/,shortcut.cf_5 + ' -\1') \ -          : x.gsub(/^-6/,shortcut.cf_5 + ' ') -        else x -        end -        s << " #{y}" unless y.empty? +      s=expand_numeric_shortcuts(a) +      q=set_files_and_paths_and_general_extract(s) +      @cmd,@mod=opt_cmd_and_mod_adjust(q[:cmd],q[:mod]) +      @what=q[:what] unless q[:what].empty? +      @paths = q[:paths] +      @files = q[:files] +      @f_pths = q[:f_pths] +      if @files.length > 0 \ +      and @cmd.empty? \ +      and @mod.length==0 #% if no other action called on filename given, default is sisu -0 [filename(s)] configured as flag default +        @cmd=shortcut.cf_0        end -      s.strip! +      SiSU_Screen::Ansi.new(@cmd,"\tsisu " + @cmd +  ' ' + @mod.join(' ') + ' ' + @files.join(' ') + "\n").print_brown if @cmd =~/[vVM]/ +#     @files.uniq! +      @act=opt_act +      @files +      self +    end +    def set_files_and_paths_and_general_extract(s) +      c,w='','' +      m,f,pth,z,lng=[],[],[],[],[]        a=s.split(/\s+/)        a.each do |x|          if x =~/^-[a-z0-5]+/i \ @@ -157,6 +140,10 @@ module SiSU_commandline              f << pt.split[1].to_s                #remove?              u=/.+?\/([^\/]+)(?:(?:\/(?:en|fr|es)$)|$)/              t=/.+\/(en|fr|es)/ +            lng << (pt.split[0].realpath.to_s[t,1]) \ +              ? pt.split[0].realpath.to_s[t,1] \ +              : nil +              #: ''              f_pths << {                pth: pt.split[0].realpath.to_s,                f: pt.split[1].to_s, @@ -176,6 +163,49 @@ module SiSU_commandline            puts "#{x} in #{a.join(' ')}?"          end        end +      { cmd: c, mod: m, what: w, paths: pth, files: f, f_pths: f_pths, lng: lng } +    end +    def expand_numeric_shortcuts(a) +      shortcut=SiSU_Env::Info_processing_flag.new +      s='' +      a.each do |x| +        y=case x +        when /0/ +          (x=~/^-1\S+/) \ +          ? x.gsub(/^-0(\S+)/,shortcut.cf_0 + ' -\1') \ +          : x.gsub(/^-0/,shortcut.cf_0 + ' ') +        when /1/ +          (x=~/^-1\S+/) \ +          ? x.gsub(/^-1(\S+)/,shortcut.cf_1 + ' -\1') \ +          : x.gsub(/^-1/,shortcut.cf_1 + ' ') +        when /2/ +          (x=~/^-2\S+/) \ +          ? x.gsub(/^-2(\S+)/,shortcut.cf_2 + ' -\1') \ +          : x.gsub(/^-2/,shortcut.cf_2 + ' ') +        when /3/ +          (x=~/^-3\S+/) \ +          ? x.gsub(/^-3(\S+)/,shortcut.cf_3 + ' -\1') \ +          : x.gsub(/^-3/,shortcut.cf_3 + ' ') +        when /4/ +          (x=~/^-4\S+/) \ +          ? x.gsub(/^-4(\S+)/,shortcut.cf_4 + ' -\1') \ +          : x.gsub(/^-4/,shortcut.cf_4 + ' ') +        when /5/ +          (x=~/^-5\S+/) \ +          ? x.gsub(/^-5(\S+)/,shortcut.cf_5 + ' -\1') \ +          : x.gsub(/^-5/,shortcut.cf_5 + ' ') +        when /6/ +          (x=~/^-6\S+/) \ +          ? x.gsub(/^-6(\S+)/,shortcut.cf_5 + ' -\1') \ +          : x.gsub(/^-6/,shortcut.cf_5 + ' ') +        else x +        end +        s << " #{y}" unless y.empty? +      end +      s.strip! +    end +    def opt_cmd_and_mod_adjust(c,m) +      cmd,mod,files=@cmd,@mod,@files        unless m.empty?          m.each do |m|            case m @@ -217,31 +247,237 @@ module SiSU_commandline            end          end        end +      ca=[]        unless c.empty?          c.gsub!(/-/,'')          c.scan(/CC|\S/) {|x| ca << x} -        @cmd= '-' + ca.uniq.join +        cmd= '-' + ca.uniq.join        end -      unless w.empty? ;  @what=w -      end -      @paths = pth -      @files = f -      @f_pths = f_pths -      if @files.length > 0 \ -      and @cmd.empty? \ -      and @mod.length==0 #% if no other action called on filename given, default is sisu -0 [filename(s)] configured as flag default -        @cmd=shortcut.cf_0 +      extra='' +      if cmd !~/[mn]/ +        extra+=if cmd =~/[abegHhIiNOoPpTtwXxyz]/ \ +        and cmd !~/[mn]/ +          'm'                        #% add dal +        elsif ((cmd =~/[Dd]/ \ +        or (mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/)) \ +        and mod.inspect !~/(?:remove|(?:(?:re)?create(?:all)?|dropall|drop)$)/) \ +        and cmd !~/[mn]/ +          'm'                                                                          #% add dal +        else '' +        end        end -      SiSU_Screen::Ansi.new(@cmd,"\tsisu " + @cmd +  ' ' + @mod.join(' ') + ' ' + @files.join(' ') + "\n").print_brown if @cmd =~/[vVM]/ -#     @files.uniq! -      @fa=[] -      @files.each do |f| -        if f =~/\.sst$/ -        elsif f =~/\.ssm$/ +      if cmd !~/y/ +        extra+=if cmd =~/[abeHhIiNopsSstwXxz]/ \ +        and cmd !~/y/ +          'ym'            #% add manifest +        elsif (cmd =~/[Dd]/ \ +        or mod.inspect =~/--(?:(?:sq)?lite|pg(?:sql)?)/) \ +        and files[0] !~/^remove$/ \ +        and cmd !~/y/ +          'ym' #% add manifest +        else ''          end        end -      @files -      self +      cmd=cmd + extra +      cmds=cmd.scan(/CC|\S/) +      [cmds.uniq.join,mod] +    end +    def opt_act #note mod line commands have already been converted to command characters, cmd +      cmd,mod=@cmd,@mod +      act={} +      act[:license]=if cmd =~/L/ \ +      or mod.inspect =~/"--license/ +        true +      else false +      end +      act[:site_init]=if cmd =~/C/ \ +      or mod.inspect =~/"--init-site/ +        true +      else false +      end +      act[:verbose]=if cmd =~/v/ \ +      or mod.inspect =~/"--verbose"/ +        true +      else false +      end +      act[:quiet]=if cmd =~/q/ \ +      or mod.inspect =~/"--quiet"/ +        true +      else false +      end +      act[:color_state]=if mod.inspect =~/"--color-on"|"--color"/ +        true +      elsif mod.inspect =~/"--color-off"/ +        true +      else true #fix default color +      end +#     act[:color_toggle]=if cmd =~/c/ \ +#     or mod.inspect =~/"--color-toggle"/ +#       true +#     else false +#     end +      act[:maintenance]=if cmd =~/M/ \ +      or mod.inspect =~/"--maintenance|--keep-processing-files"/ +        true +      else false +      end +      act[:ocn]=if mod.inspect =~/"--no-ocn"/ +        false +      else true +      end +      act[:dal]=if cmd =~/m/ \ +      or mod.inspect =~/"--dal"/ +        true +      else false +      end +      act[:html]=if cmd =~/h/ \ +      or mod.inspect =~/"--html"/ +        true +      else false +      end +      act[:concordance]=if cmd =~/w/ \ +      or mod.inspect =~/"--concordance"/ +        true +      else false +      end +      act[:pdf]=if cmd =~/p/ \ +      or mod.inspect =~/"--pdf"/ +        true +      else false +      end +      act[:epub]=if cmd =~/e/ \ +      or mod.inspect =~/"--epub"/ +        true +      else false +      end +      act[:odt]=if cmd =~/o/ \ +      or mod.inspect =~/"--odf"/ +        true +      else false +      end +      act[:xml_sax]=if cmd =~/x/ \ +      or mod.inspect =~/"--xml-sax"/ +        true +      else false +      end +      act[:xml_dom]=if cmd =~/X/ \ +      or mod.inspect =~/"--xml-dom"/ +        true +      else false +      end +      act[:xhtml]=if cmd =~/b/ \ +      or mod.inspect =~/"--xhtml"/ +        true +      else false +      end +      act[:txt]=if cmd =~/[at]/ \ +      or mod.inspect =~/"--txt"/ +        true +      else false +      end +      act[:manpage]=if cmd =~/i/ \ +      or mod.inspect =~/"--manpage"/ +        true +      else false +      end +      act[:texinfo]=if cmd =~/I/ \ +      or mod.inspect =~/"--texinfo"/ +        true +      else false +      end +      act[:fictionbook]=if cmd =~/f/ \ +      or mod.inspect =~/"--fictionbook"/ +        true +      else false +      end +      act[:psql]=if cmd =~/D/ \ +      or mod.inspect =~/"--pg"|"--pgsql"/ +        true +      else false +      end +      act[:sqlite]=if cmd =~/d/ \ +      or mod.inspect =~/"--sqlite"/ +        true +      else false +      end +      act[:harvest]=if mod.inspect =~/"--harvest"/ +        true +      else false +      end +      act[:po4a]=if mod.inspect =~/"--po4a"|"--po"/ +        true +      else false +      end +      act[:git]=if cmd =~/g/ \ +      or mod.inspect =~/"--git"/ +        true +      else false +      end +      act[:hash_digests]=if cmd =~/N/ \ +      or mod.inspect =~/"--hash-digests"/ +        true +      else false +      end +      act[:sample_search_form]=if cmd =~/F/ \ +      or mod.inspect =~/"--sample-search-form"/ +        true +      else false +      end +      act[:webrick]=if cmd =~/W/ \ +      or mod.inspect =~/"--webrick"/ +        true +      else false +      end +      act[:share_source]=if cmd =~/s/ \ +      or mod.inspect =~/"--source"/ +        true +      else false +      end +      act[:sisupod]=if cmd =~/S/ \ +      or mod.inspect =~/"--sisupod"/ +        true +      else false +      end +      act[:scp]=if cmd =~/r/ \ +      or mod.inspect =~/"--scp"/ +        true +      else false +      end +      act[:rsync]=if cmd =~/R/ \ +      or mod.inspect =~/"--rsync"/ +        true +      else false +      end +      act[:delete_output]=if cmd =~/z/ \ +      or mod.inspect =~/"--delete"|"--zap"/ +        true +      else false +      end +      act[:urls_all]=if cmd =~/U/ \ +      or mod.inspect =~/"--urls-all"/ +        true +      else false +      end +      act[:urls_seleted]=if cmd =~/u/ \ +      or mod.inspect =~/"--urls"/ +        true +      else false +      end +      act[:sitemap]=if cmd =~/Y/ \ +      or mod.inspect =~/"--sitemap"/ +        true +      else false +      end +      act[:manifest]=if cmd =~/y/ \ +      or mod.inspect =~/"--manifest"/ +        true +      else false +      end +      act[:help]=if mod.inspect =~/"--help/ +        true +      else false +      end +      @act=act      end      def cmd        @cmd @@ -249,12 +485,18 @@ module SiSU_commandline      def mod        @mod      end +    def act +      @act +    end      def f_pth        @f_pth      end      def pth        @pth      end +    def lng +      @lng +    end      def fns        @fns      end | 
