blob: 36b34f30e6d036e423c53db2f77b2d3bfa910c70 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
#!/usr/bin/env ruby
# program : ctxtools
# copyright : PRAGMA Advanced Document Engineering
# version : 1.0 - 2002/2004
# author : Hans Hagen
# This script will harbor some handy manipulations on context
# related files.
banner = ['CtxTools', 'version 1.0', '2004', 'PRAGMA ADE/POD']
unless defined? ownpath
ownpath = $0.sub(/[\\\/][a-z0-9\-]*?\.rb/i,'')
$: << ownpath
end
require 'ftools'
require 'xmpl/switch'
require 'exa/logger'
class Commands
include CommandBase
def touchcontextfile
maincontextfile = 'context.tex'
unless FileTest.file?(maincontextfile) then
begin
maincontextfile = `kpsewhich -progname=context #{maincontextfile}`.chomp
rescue
maincontextfile = ''
end
end
touchfile(maincontextfile) unless maincontextfile.empty?
end
private
def touchfile(filename)
if FileTest.file?(filename) then
if data = IO.read(filename) then
timestamp = Time.now.strftime('%Y.%m.%d')
prevstamp = ''
begin
data.gsub!(/\\contextversion\{(\d+\.\d+\.\d+)\}/) do
prevstamp = $1
"\\contextversion{#{timestamp}}"
end
rescue
else
begin
File.delete(filename+'.old')
rescue
end
begin
File.copy(filename,filename+'.old')
rescue
end
begin
if f = File.open(filename,'w') then
f.puts(data)
f.close
end
rescue
end
end
if prevstamp.empty? then
report("#{filename} is not updated, no timestamp found")
else
report("#{filename} is updated from #{prevstamp} to #{timestamp}")
end
end
else
report("#{filename} is not found")
end
end
end
logger = EXA::ExaLogger.new(banner.shift)
commandline = CommandLine.new
commandline.registeraction('touchcontextfile', '')
commandline.registeraction('help')
commandline.registeraction('version')
commandline.registerflag('recurse')
commandline.registerflag('force')
commandline.expand
Commands.new(commandline,logger,banner).send(commandline.action || 'help')
|