* Re: Re: location of texsync.rb/minimal ConTeXt installation
2004-09-04 16:57 ` Nikolai Weibull
@ 2004-09-04 17:26 ` Hans Hagen Outside
0 siblings, 0 replies; 5+ messages in thread
From: Hans Hagen Outside @ 2004-09-04 17:26 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 806 bytes --]
Nikolai Weibull wrote:
>In linuxtex.zip.bz2 you mean? (why the double compression?)
>
>
the zip is not compressed, just use as storage container, bzipping the
whole unzipped lot is more efficient
>Then no. Neither is it in any of the cont-*.zip files;
>nor in
>http://www.pragma-ade.com/system/usr/local/context/tex/texmf-local/scripts/context/ruby/
>
>
hm, i'll have a look, file attached
Hans
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
| www.pragma-pod.nl
-----------------------------------------------------------------
[-- Attachment #2: texsync.rb --]
[-- Type: text/plain, Size: 6658 bytes --]
#!/usr/bin/env ruby
# program : texsync
# copyright : PRAGMA Advanced Document Engineering
# version : 1.1 - 2003/2004
# author : Hans Hagen
# For the moment this script only handles the 'minimal' context
# distribution. In due time I will add a few more options, like
# synchronization of the iso image.
banner = ['TeXSync', 'version 1.1', '2002/2004', 'PRAGMA ADE/POD']
unless defined? ownpath
ownpath = $0.sub(/[\\\/]\w*?\.rb/i,'')
$: << ownpath
end
require 'xmpl/switch'
require 'exa/logger'
require 'rbconfig'
class Commands
include CommandBase
@@formats = ['en','nl','de','cz','it','ro']
@@always = ['metafun','mptopdf','en','nl']
@@rsync = 'rsync -r -z -c --progress --stats "--exclude=*.fmt" "--exclude=*.efmt" "--exclude=*.mem"'
@@kpsewhich = Hash.new
@@kpsewhich['minimal'] = 'SELFAUTOPARENT'
@@kpsewhich['context'] = 'TEXMFLOCAL'
@@kpsewhich['documentation'] = 'TEXMFLOCAL'
@@kpsewhich['unknown'] = 'SELFAUTOPARENT'
def update
report
return unless destination = getdestination
texpaths = gettexpaths
address = option('address')
user = option('user')
tree = option('tree')
force = option('force')
ok = true
begin
report("synchronizing '#{tree}' from '#{address}' to '#{destination}'")
report
if texpaths then
texpaths.each do |path|
report("synchronizing path '#{path}' of '#{tree}' from '#{address}' to '#{destination}'")
command = "#{rsync} #{user}@#{address}::#{tree}/#{path} #{destination}/{path}"
ok = ok && system(command) if force
end
else
command = "#{@@rsync} #{user}@#{address}::#{tree} #{destination}"
ok = system(command) if force
end
rescue
report("error in running rsync")
ok = false
ensure
if force then
if ok then
if option('make') then
report("generating tex and metapost formats")
report
formats.delete_if do |f|
begin
`kpsewhich cont-#{f}`.chomp.empty?
rescue
end
end
str = [@@formats,@@always].flatten.uniq.join(' ')
begin
system("texexec --make --alone #{str}")
rescue
report("unable to generate formats '#{str}'")
else
report
end
else
report("regenerate the formats files if needed")
end
else
report("error in synchronizing '#{tree}'")
end
else
report("provide --force to execute '#{command}'") unless force
end
end
end
def list
report
address = option('address')
user = option('user')
result = nil
begin
report("fetching list of trees from '#{address}'")
command = "#{@@rsync} #{user}@#{address}::"
if option('force') then
result = `#{command}`.chomp
else
report("provide --force to execute '#{command}'")
end
rescue
result = nil
else
if result then
report("available trees:")
report
reportlines(result)
end
ensure
report("unable to fetch list") unless result
end
end
private
def gettexpaths
if option('full') then
texpaths = ['texmf','texmf-local','texmf-fonts','texmf-mswin','texmf-linux','texmf-macos']
elsif option('terse') then
texpaths = ['texmf','texmf-local','texmf-fonts']
case Config::CONFIG['host_os']
when /mswin/ then texpaths.push('texmf-mswin')
when /linux/ then texpaths.push('texmf-linux')
when /darwin/ then texpaths.push('texmf-macosx')
end
else
texpaths = nil
end
texpaths
end
def getdestination
if (destination = option('destination')) && ! destination.empty? then
begin
if @@kpsewhich.key?(destination) then
destination = @@kpsewhich[option('tree')] || @@kpsewhich['unknown']
destination = `kpsewhich --expand-var=$#{destination}`.chomp
elsif ! FileTest.directory?(destination) then
destination = nil
end
rescue
report("unable to determine destination tex root")
else
if ! destination || destination.empty? then
report("no destination is specified")
elsif not FileTest.directory?(destination) then
report("invalid destination '#{destination}'")
elsif not FileTest.writable?(destination) then
report("destination '#{destination}' is not writable")
else
report("using destination '#{destination}'")
return destination
end
end
else
report("unknown destination")
end
return nil
end
end
logger = EXA::ExaLogger.new(banner.shift)
commandline = CommandLine.new
commandline.registeraction('update', 'update installed tree')
commandline.registeraction('list', 'list available trees')
commandline.registerflag('terse', 'download as less as possible (esp binaries)')
commandline.registerflag('full', 'download everything (all binaries)')
commandline.registerflag('force', 'confirm action')
commandline.registerflag('make', 'remake formats')
commandline.registervalue('address', 'www.pragma-ade.com', 'adress of repository (www.pragma-ade)')
commandline.registervalue('user', 'guest', 'user account (guest)')
commandline.registervalue('tree', 'tex', 'tree to synchronize (tex)')
commandline.registervalue('destination', nil, 'destination of tree (kpsewhich)')
commandline.registeraction('help')
commandline.registeraction('version')
commandline.expand
Commands.new(commandline,logger,banner).send(commandline.action || 'help')
[-- Attachment #3: Type: text/plain, Size: 139 bytes --]
_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context
^ permalink raw reply [flat|nested] 5+ messages in thread