febootstrap: Add --save-temps option to save temporary files on exit.
authorRichard W.M. Jones <rjones@redhat.com>
Fri, 19 Aug 2011 09:06:00 +0000 (10:06 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Fri, 19 Aug 2011 09:08:21 +0000 (10:08 +0100)
.depend
Makefile.am
febootstrap.pod
febootstrap_cmdline.ml
febootstrap_cmdline.mli
febootstrap_utils.ml

diff --git a/.depend b/.depend
index c42620f..e71f272 100644 (file)
--- a/.depend
+++ b/.depend
@@ -1,11 +1,11 @@
 config.cmo:
 config.cmx:
-febootstrap_utils.cmi:
-febootstrap_utils.cmo: febootstrap_utils.cmi
-febootstrap_utils.cmx: febootstrap_utils.cmi
 febootstrap_cmdline.cmi:
 febootstrap_cmdline.cmo: config.cmo febootstrap_cmdline.cmi
 febootstrap_cmdline.cmx: config.cmx febootstrap_cmdline.cmi
+febootstrap_utils.cmi:
+febootstrap_utils.cmo: febootstrap_cmdline.cmi febootstrap_utils.cmi
+febootstrap_utils.cmx: febootstrap_cmdline.cmx febootstrap_utils.cmi
 febootstrap_package_handlers.cmi:
 febootstrap_package_handlers.cmo: febootstrap_utils.cmi \
     febootstrap_cmdline.cmi febootstrap_package_handlers.cmi
index 4765024..109d2c8 100644 (file)
@@ -24,10 +24,10 @@ SUBDIRS = lib helper
 # Note these must be in build dependency order.
 SOURCES = \
        config.ml \
-       febootstrap_utils.mli \
-       febootstrap_utils.ml \
        febootstrap_cmdline.mli \
        febootstrap_cmdline.ml \
+       febootstrap_utils.mli \
+       febootstrap_utils.ml \
        febootstrap_package_handlers.mli \
        febootstrap_package_handlers.ml \
        febootstrap_yum_rpm.ml \
index aa0a8cd..ac97f48 100644 (file)
@@ -91,6 +91,11 @@ written (C<hostfiles> and C<base.img>).  The default directory is the
 current directory.  Note that if this files exist already in the
 output directory then they will be overwritten.
 
+=item B<--save-temps>
+
+Don't remove temporary files and directories on exit.  This is useful
+for debugging.
+
 =item B<-v>
 
 =item B<--verbose>
index 902e313..667e297 100644 (file)
@@ -22,6 +22,7 @@ let excludes = ref []
 let names_mode = ref false
 let outputdir = ref "."
 let packages = ref []
+let save_temps = ref false
 let verbose = ref false
 let warnings = ref true
 let yum_config = ref None
@@ -45,6 +46,10 @@ let argspec = Arg.align [
     " Suppress warnings";
   "-o", Arg.Set_string outputdir,
     "outputdir Set output directory (default: \".\")";
+  "--save-temp", Arg.Set save_temps,
+    " Don't delete temporary files and directories on exit.";
+  "--save-temps", Arg.Set save_temps,
+    " Don't delete temporary files and directories on exit.";
   "-v", Arg.Set verbose,
     " Enable verbose output";
   "--verbose", Arg.Set verbose,
@@ -83,6 +88,7 @@ let excludes = List.rev !excludes
 let names_mode = !names_mode
 let outputdir = !outputdir
 let packages = List.rev !packages
+let save_temps = !save_temps
 let verbose = !verbose
 let warnings = !warnings
 let yum_config = !yum_config
index 107e70a..d948d80 100644 (file)
@@ -35,6 +35,9 @@ val outputdir : string
 val packages : string list
   (** List of packages or package names as supplied on the command line. *)
 
+val save_temps : bool
+  (** True if [--save-temps] was given on the command line. *)
+
 val verbose : bool
   (** True if [--verbose] was given on the command line.
       See also {!debug}. *)
index 04c91ad..2265753 100644 (file)
@@ -90,10 +90,14 @@ let tmpdir () =
    *)
   let tmpdir = Filename.temp_dir_name // sprintf "febootstrap%s.tmp" data in
   Unix.mkdir tmpdir 0o700;
-  at_exit
-    (fun () ->
-       let cmd = sprintf "rm -rf %s" (Filename.quote tmpdir) in
-       ignore (Sys.command cmd));
+
+  (* Only remove the directory if --save-temps was *not* specified. *)
+  if not Febootstrap_cmdline.save_temps then
+    at_exit
+      (fun () ->
+        let cmd = sprintf "rm -rf %s" (Filename.quote tmpdir) in
+        ignore (Sys.command cmd));
+
   tmpdir
 
 let rec find s sub =