banner = ['TMFTools', 'version 1.1.0 (experimental, no help yet)', '2005/2006', 'PRAGMA ADE/POD']
$: << File.expand_path(File.dirname($0)) ; $: << File.join($:.last,'lib') ; $:.uniq!
require 'base/switch'
require 'base/logger'
class Commands
include CommandBase
def init_kpse
if ENV['KPSEMETHOD'] && ENV['KPSEPORT'] then
require 'base/kpseremote'
k = KpseRemote.new
else
k = nil
end
if k && k.okay? then
k.progname = @commandline.option('progname')
k.engine = @commandline.option('engine')
k.format = @commandline.option('format')
else
require 'base/kpsefast'
k = KpseFast.new
k.rootpath = @commandline.option('rootpath')
k.treepath = @commandline.option('treepath')
k.progname = @commandline.option('progname')
k.engine = @commandline.option('engine')
k.format = @commandline.option('format')
k.diskcache = @commandline.option('diskcache')
k.renewcache = @commandline.option('renewcache')
k.load_cnf
k.expand_variables
k.load_lsr
end
return k
end
def serve
if ENV['KPSEMETHOD'] && ENV['KPSEPORT'] then
require 'base/kpseremote'
begin
KpseRemote::start_server
rescue
end
end
end
def reload
begin
init_kpse.load
rescue
end
end
def main
if option = @commandline.option('expand-braces') and not option.empty? then
puts init_kpse.expand_braces(option)
elsif option = @commandline.option('expand-path') and not option.empty? then
puts init_kpse.expand_path(option)
elsif option = @commandline.option('expand-var') and not option.empty? then
if option == '*' then
init_kpse.list_expansions()
else
puts init_kpse.expand_var(option)
end
elsif option = @commandline.option('show-path') and not option.empty? then
puts init_kpse.show_path(option)
elsif option = @commandline.option('var-value') and not option.empty? then
if option == '*' then
init_kpse.list_variables()
else
puts init_kpse.expand_var(option)
end
elsif @commandline.arguments.size > 0 then
kpse = init_kpse
@commandline.arguments.each do |option|
puts kpse.find_file(option)
end
else
help
end
end
def analyze
pattern = @commandline.argument('first')
strict = @commandline.option('strict')
sort = @commandline.option('sort')
delete = @commandline.option('delete') and @commandline.option('force')
init_kpse.analyze_files(pattern, strict, sort, delete)
end
end
logger = Logger.new(banner.shift)
commandline = CommandLine.new
commandline.registervalue('expand-braces','')
commandline.registervalue('expand-path','')
commandline.registervalue('expand-var','')
commandline.registervalue('show-path','')
commandline.registervalue('var-value','')
commandline.registervalue('engine','')
commandline.registervalue('progname','')
commandline.registervalue('format','')
commandline.registervalue('rootpath','')
commandline.registervalue('treepath','')
commandline.registervalue('sort','')
commandline.registerflag('diskcache')
commandline.registerflag('renewcache')
commandline.registerflag('strict')
commandline.registerflag('delete')
commandline.registerflag('force')
commandline.registeraction('analyze', "[--strict --sort --rootpath --treepath]\n[--delete [--force]] [pattern]")
commandline.registerflag('verbose')
commandline.registeraction('help')
commandline.registeraction('version')
commandline.registeraction('reload', 'reload file database')
commandline.registeraction('serve', 'act as kpse server')
commandline.expand
Commands.new(commandline,logger,banner).send(commandline.action || 'main')