From: Hans Hagen Outside <pragma@wxs.nl>
Subject: Re: Re: location of texsync.rb/minimal ConTeXt installation
Date: Sat, 04 Sep 2004 19:26:18 +0200 [thread overview]
Message-ID: <4139FABA.1030105@wxs.nl> (raw)
In-Reply-To: <20040904165703.GB4231@puritan.pcp.ath.cx>
[-- 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
next prev parent reply other threads:[~2004-09-04 17:26 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-03 18:54 Nikolai Weibull
2004-09-04 14:47 ` Hans Hagen Outside
2004-09-04 16:57 ` Nikolai Weibull
2004-09-04 17:26 ` Hans Hagen Outside [this message]
2004-09-04 14:52 ` Hans Hagen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4139FABA.1030105@wxs.nl \
--to=pragma@wxs.nl \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).