Make sure to delete the output file in case of an exception.
[redact.git] / lib / redact / app.rb
index b706acc4abed2d3b804b84a79e5afd500c540d6a..2cc9dd7cf74b7022948a0d207380bb08127c32ab 100644 (file)
@@ -1,5 +1,5 @@
 #--
-# $Id: app.rb 4 2005-03-26 19:26:56Z tilman $
+# $Id: app.rb 40 2005-05-25 20:19:45Z tilman $
 #
 # Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
 #
@@ -66,15 +66,20 @@ module Redact
 
                        amx = compile_embryo
 
-                       Eet::File.open(@options.output, "w") do |ef|
-                               dump_amx(amx, ef)
-
-                               dump_header(ef)
-                               dump_collections(ef)
-                               dump_fonts(ef)
-                               dump_images(ef)
-                               dump_source(ef)
-                               dump_fontmap(ef)
+                       begin
+                               Eet::File.open(@options.output, "w") do |ef|
+                                       dump_amx(amx, ef)
+
+                                       dump_header(ef)
+                                       dump_collections(ef)
+                                       dump_fonts(ef)
+                                       dump_images(ef)
+                                       dump_source(ef)
+                                       dump_fontmap(ef)
+                               end
+                       rescue Exception
+                               File.rm_f(@options.output)
+                               raise
                        end
                end
 
@@ -110,11 +115,7 @@ module Redact
                                end
 
                                o.on_tail("--version", "Show version") do
-                                       puts <<EOT
-redact #{Redact::VERSION}
-
-Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
-EOT
+                                       puts "Redact #{Redact::VERSION}"
                                        exit
                                end
 
@@ -139,7 +140,8 @@ EOT
                                                c = "embryo_cc " +
                                                    "-i #{incl}/include " +
                                                    "-o #{tf_out.path} #{tf_in.path}"
-                                               unless system(c)
+                                               system(c)
+                                               unless (0..1).include?($?.exitstatus)
                                                        raise("Cannot compile Embryo code")
                                                end
 
@@ -210,7 +212,7 @@ EOT
                                method = (sane == @filename) ? :unshift : :push
                                s.send(method, SourceFile.new(sane, value.join))
 
-                               # include files that are with File.read, too
+                               # include files that are read with File.read, too
                                value.join.grep(/File\.read\(\"(.+)\"\)/) do
                                        sane = Pathname.new($1).cleanpath.to_s
                                        s << SourceFile.new(sane, File.read(sane))