aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v3/options.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sisu/v3/options.rb')
-rw-r--r--lib/sisu/v3/options.rb426
1 files changed, 334 insertions, 92 deletions
diff --git a/lib/sisu/v3/options.rb b/lib/sisu/v3/options.rb
index a79b08f3..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,72 +163,321 @@ 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
- when /^(?:--color-toggle)$/; c=c+'c'
- when /^(?:--configure)$/; c=c+'CC'
- when /^(?:--dal?|--machine|--abstraction|--abs)$/; c=c+'m'
- when /^(?:--txt|--text|--plaintext)$/; c=c+'t'
- when /^(?:--html)$/; c=c+'h'
- when /^(?:--epub)$/; c=c+'e'
- when /^(?:--od[ft])$/; c=c+'o'
- when /^(?:--pdf)$/; c=c+'p'
- when /^(?:--concordance|--wordmap)$/; c=c+'w'
- when /^(?:--manpage)$/; c=c+'i'
- when /^(?:--texinfo)$/; c=c+'I'
- when /^(?:--xhtml)$/; c=c+'b'
- when /^(?:--xml-sax)$/; c=c+'x'
- when /^(?:--xml-dom)$/; c=c+'X'
- when /^(?:--digest)$/; c=c+'N'
- when /^(?:--po4a|--pot?)$/; c=c+'P'
- when /^(?:--termsheet)$/; c=c+'T'
- when /^(?:--manifest)$/; c=c+'y'
- when /^(?:--sqlite)$/; c=c+'d'
- when /^(?:--pg|--pg?sql|--postgresql)$/; c=c+'D'
- when /^(?:--remote|--rsync)$/; c=c+'R'
- when /^(?:--scp)$/; c=c+'r'
- when /^(?:--source)$/; c=c+'s'
- when /^(?:--sisupod|--pod)$/; c=c+'S'
- when /^(?:--git)$/; c=c+'g'
- when /^(?:--urls)$/; c=c+'U'
- when /^(?:--zap|--delete)$/; c=c+'Z'
- when /^(?:--sample-search-form)$/; c=c+'F'
- when /^(?:--webserv|--webrick)$/; c=c+'W'
- when /^(?:--maintenance)$/; c=c+'M'
- when /^(?:--verbose[=-]3)$/; c=c+'VM'
- when /^(?:--verbose[=-]2|--Verbose|--VERBOSE)$/; c=c+'V'
- when /^(?:--verbose(?:[=-]1)?)$/; c=c+'v'
- when /^(?:--verbose[=-]0|--quiet|--silent)$/; c=c+'q'
- else @mod << m
+ when /^--(?:color-toggle)$/; c=c+'c'
+ when /^--(?:configure)$/; c=c+'CC'
+ when /^--(?:dal?|machine|abstraction|abs)$/; c=c+'m'
+ when /^--(?:txt|text|plaintext)$/; c=c+'t'
+ when /^--(?:html)$/; c=c+'h'
+ when /^--(?:epub)$/; c=c+'e'
+ when /^--(?:od[ft])$/; c=c+'o'
+ when /^--(?:pdf)$/; c=c+'p'
+ when /^--(?:concordance|wordmap)$/; c=c+'w'
+ when /^--(?:manpage)$/; c=c+'i'
+ when /^--(?:texinfo)$/; c=c+'I'
+ when /^--(?:xhtml)$/; c=c+'b'
+ when /^--(?:xml-sax)$/; c=c+'x'
+ when /^--(?:xml-dom)$/; c=c+'X'
+ when /^--(?:hash-digests)$/; c=c+'N'
+ when /^--(?:po4a|pot?)$/; c=c+'P'
+ when /^--(?:termsheet)$/; c=c+'T'
+ when /^--(?:manifest)$/; c=c+'y'
+ when /^--(?:sqlite)$/; c=c+'d'
+ when /^--(?:pg|pg?sql|postgresql)$/; c=c+'D'
+ when /^--(?:remote|rsync)$/; c=c+'R'
+ when /^--(?:scp)$/; c=c+'r'
+ when /^--(?:source)$/; c=c+'s'
+ when /^--(?:sisupod|pod)$/; c=c+'S'
+ when /^--(?:git)$/; c=c+'g'
+ when /^--(?:urls)$/; c=c+'U'
+ when /^--(?:zap|delete)$/; c=c+'Z'
+ when /^--(?:sample-search-form)$/; c=c+'F'
+ when /^--(?:webserv|webrick)$/; c=c+'W'
+ when /^--(?:maintenance|keep-processing-files)$/; c=c+'M'
+ when /^--(?:verbose[=-]3)$/; c=c+'VM'
+ when /^--(?:verbose[=-]2|Verbose|VERBOSE)$/; c=c+'V'
+ when /^--(?:verbose(?:[=-]1)?)$/; c=c+'v'
+ when /^--(?:verbose[=-]0|quiet|silent)$/; c=c+'q'
+ else mod << m #mod only contains command modifiers; commands converted to character
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