store expanded .rscons script next to rscons script - close #105

This commit is contained in:
Josh Holtrop 2019-05-09 22:30:20 -04:00
parent 89e43fea1c
commit 6be0d322a7

View File

@ -1,17 +1,13 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
require "fileutils" require "fileutils"
require "digest/md5"
if File.read("lib/rscons/version.rb") =~ /VERSION = "(.+)"/ if File.read("lib/rscons/version.rb") =~ /VERSION = "(.+)"/
VERSION = $1 VERSION = $1
else else
raise "Could not determine version." raise "Could not determine version."
end end
if `git show | head -n 1` =~ /commit\s+([0-9a-f]{7})/i
GIT = $1
else
raise "Could not determine git revision."
end
PROG_NAME = "rscons" PROG_NAME = "rscons"
START_FILE = "bin/#{PROG_NAME}" START_FILE = "bin/#{PROG_NAME}"
LIB_DIR = "lib" LIB_DIR = "lib"
@ -65,12 +61,13 @@ end
require "zlib" require "zlib"
compressed_script = Zlib::Deflate.deflate(stripped_comments.join) compressed_script = Zlib::Deflate.deflate(stripped_comments.join)
escaped_compressed_script = compressed_script.gsub("#", "#1").gsub("\n", "#2").gsub("\r", "#3").gsub("\0", "#4") escaped_compressed_script = compressed_script.gsub("#", "#1").gsub("\n", "#2").gsub("\r", "#3").gsub("\0", "#4")
hash = Digest::MD5.hexdigest(escaped_compressed_script)
FileUtils.mkdir_p(DIST) FileUtils.mkdir_p(DIST)
File.open("#{DIST}/#{PROG_NAME}", "wb", 0755) do |fh| File.open("#{DIST}/#{PROG_NAME}", "wb", 0755) do |fh|
fh.write(<<EOF) fh.write(<<EOF)
#!/usr/bin/env ruby #!/usr/bin/env ruby
script = ".rscons-#{VERSION}-#{GIT}.rb" script = File.join(File.dirname(__FILE__), ".rscons-#{VERSION}-#{hash}.rb")
unless File.exists?(script) unless File.exists?(script)
if File.read(__FILE__, mode: "rb") =~ /^#==>(.*)/ if File.read(__FILE__, mode: "rb") =~ /^#==>(.*)/
escaped_compressed = $1 escaped_compressed = $1