summaryrefslogtreecommitdiff
path: root/tool/expand-config.rb
diff options
context:
space:
mode:
Diffstat (limited to 'tool/expand-config.rb')
-rwxr-xr-xtool/expand-config.rb31
1 files changed, 28 insertions, 3 deletions
diff --git a/tool/expand-config.rb b/tool/expand-config.rb
index fb2edd02e8..c132d4afaa 100755
--- a/tool/expand-config.rb
+++ b/tool/expand-config.rb
@@ -1,7 +1,32 @@
-STDOUT.binmode
+#!./miniruby -s
+
+config = File.read(conffile = $config)
+config.sub!(/^(\s*)RUBY_VERSION\b.*(\sor\s*)$/, '\1true\2')
+rbconfig = Module.new {module_eval(config, conffile)}::RbConfig
+config = $expand ? rbconfig::CONFIG : rbconfig::MAKEFILE_CONFIG
+config["RUBY_RELEASE_DATE"] ||=
+ File.read(File.expand_path("../../version.h", __FILE__))[/^\s*#\s*define\s+RUBY_RELEASE_DATE\s+"(.*)"/, 1]
+
+while /\A(\w+)=(.*)/ =~ ARGV[0]
+ config[$1] = $2
+ ARGV.shift
+end
+
+re = /@(#{config.keys.map {|k| Regexp.quote(k)}.join('|')})@/
+
+if $output
+ output = open($output, "wb", $mode &&= $mode.oct)
+ output.chmod($mode) if $mode
+else
+ output = STDOUT
+ output.binmode
+end
+
ARGF.each do |line|
line.gsub!(/@([a-z_]\w*)@/i) {
- (RbConfig::MAKEFILE_CONFIG[$1] or "").gsub(/\$\((.+?)\)/, %Q[${\\1}])
+ s = config.fetch($1, $expand ? $& : "")
+ s = s.gsub(/\$\((.+?)\)/, %Q[${\\1}]) unless $expand
+ s
}
- puts line
+ output.puts line
end