Browse CVS Repository
Contents of /exerb/exerb/src/prepare18.rb
Parent Directory
| Revision Log
| Revision Graph
Revision 1.4 -
( show annotations)
( download)
Sun Jun 17 14:47:11 2007 UTC
(16 years, 9 months ago)
by arton
Branch: MAIN
CVS Tags: release510, release500, release520, release420, ChangeLog, release461, release430, release450, release480, release470, release440, release530, release490, release460, release540, HEAD
Changes since 1.3: +4 -2 lines
ruby-1.8.6-p36 exerb-4.2.0.0
| 1 |
#!/usr/bin/evn ruby |
| 2 |
# $Id: prepare18.rb,v 1.3 2007/03/17 20:21:26 arton Exp $ |
| 3 |
=begin |
| 4 |
- libexerb/libexerb.dsp 内の出力ファイル名を更新 |
| 5 |
- ruby18c, ruby18crt, ruby18g, ruby18grt 内の出力ファイル名を更新 |
| 6 |
- ../lib/exerb/config.rb 内の入力ファイル名を更新 |
| 7 |
=end |
| 8 |
require 'fileutils' |
| 9 |
|
| 10 |
if ARGV.length == 0 || !(/\d\d/ =~ ARGV[0]) |
| 11 |
STDERR.puts 'usage: ruby prepare18.rb ?? (?? --- exerb??.dll)' |
| 12 |
exit 1 |
| 13 |
end |
| 14 |
|
| 15 |
/(\d).(\d).(\d)/ =~ RUBY_VERSION |
| 16 |
VER = $1 + $2 + $3 |
| 17 |
puts "version=#{VER}, release=#{ARGV[0]}" |
| 18 |
|
| 19 |
PROJECT = [ |
| 20 |
'ruby18c/ruby18c.dsp', |
| 21 |
'ruby18crt/ruby18crt.dsp', |
| 22 |
'ruby18g/ruby18g.dsp', |
| 23 |
'ruby18grt/ruby18grt.dsp', |
| 24 |
'../lib/exerb/config.rb', |
| 25 |
'../test/testcase.rb', |
| 26 |
] |
| 27 |
|
| 28 |
class Dsp |
| 29 |
def initialize(name, version, regex) |
| 30 |
@name = name |
| 31 |
@version = version |
| 32 |
@regex = regex |
| 33 |
@file_name = "tmp.#{Process.pid}" |
| 34 |
@file = File.open(@file_name, 'w') |
| 35 |
end |
| 36 |
|
| 37 |
def write |
| 38 |
f = File.open(@name, 'r') |
| 39 |
f.each_line do |line| |
| 40 |
if @regex =~ line |
| 41 |
line.gsub!($1, @version) |
| 42 |
end |
| 43 |
@file.puts line |
| 44 |
end |
| 45 |
f.close |
| 46 |
end |
| 47 |
|
| 48 |
def close |
| 49 |
internal_close |
| 50 |
FileUtils.cp(@name, "#{@name}.bak") |
| 51 |
FileUtils.mv(@file_name, @name) |
| 52 |
end |
| 53 |
|
| 54 |
def discard |
| 55 |
internal_close |
| 56 |
FileUtils.rm_f(@file_name) |
| 57 |
end |
| 58 |
|
| 59 |
def internal_close |
| 60 |
begin |
| 61 |
@file.close |
| 62 |
rescue |
| 63 |
end |
| 64 |
end |
| 65 |
|
| 66 |
end |
| 67 |
|
| 68 |
class ExcDsp < Dsp |
| 69 |
def initialize(name, target = VER[2..2], regex = Regexp.new("ruby#{VER[0..1]}(\\d)\\w+.exc")) |
| 70 |
super |
| 71 |
end |
| 72 |
end |
| 73 |
|
| 74 |
exerb = Dsp.new('libexerb/libexerb.dsp', ARGV[0], /exerb(\d\d)\.dll/) |
| 75 |
begin |
| 76 |
exerb.write |
| 77 |
exerb.close |
| 78 |
rescue |
| 79 |
STDERR.puts $!.message |
| 80 |
exerb.discard |
| 81 |
exit 2 |
| 82 |
end |
| 83 |
|
| 84 |
PROJECT.each do |file| |
| 85 |
exc = ExcDsp.new(file) |
| 86 |
begin |
| 87 |
exc.write |
| 88 |
exc.close |
| 89 |
rescue |
| 90 |
STDERR.puts $!.message |
| 91 |
exc.discard |
| 92 |
exit 3 |
| 93 |
end |
| 94 |
end |
| 95 |
|
| |