src/Pure/Tools/dump.scala
changeset 68936 90c08c7bab9c
parent 68930 19ddfe546620
child 68941 c192c8f9f19b
--- a/src/Pure/Tools/dump.scala	Fri Sep 07 20:35:18 2018 +0200
+++ b/src/Pure/Tools/dump.scala	Fri Sep 07 23:47:26 2018 +0200
@@ -76,6 +76,7 @@
   /* dump */
 
   val default_output_dir = Path.explode("dump")
+  val default_commit_clean_delay = Time.seconds(-1.0)
 
   def make_options(options: Options, aspects: List[Aspect]): Options =
   {
@@ -91,6 +92,7 @@
     select_dirs: List[Path] = Nil,
     output_dir: Path = default_output_dir,
     verbose: Boolean = false,
+    commit_clean_delay: Time = default_commit_clean_delay,
     system_mode: Boolean = false,
     selection: Sessions.Selection = Sessions.Selection.empty): Process_Result =
   {
@@ -158,7 +160,10 @@
         include_sessions = include_sessions, progress = progress, log = log)
 
     val theories_result =
-      session.use_theories(use_theories, progress = progress, commit = Some(Consumer.apply _))
+      session.use_theories(use_theories,
+        progress = progress,
+        commit = Some(Consumer.apply _),
+        commit_clean_delay = commit_clean_delay)
 
     val session_result = session.stop()
 
@@ -176,6 +181,7 @@
     {
       var aspects: List[Aspect] = known_aspects
       var base_sessions: List[String] = Nil
+      var commit_clean_delay = default_commit_clean_delay
       var select_dirs: List[Path] = Nil
       var output_dir = default_output_dir
       var requirements = false
@@ -195,6 +201,8 @@
   Options are:
     -A NAMES     dump named aspects (default: """ + known_aspects.mkString("\"", ",", "\"") + """)
     -B NAME      include session NAME and all descendants
+    -C SECONDS   delay for cleaning of already dumped theories (disabled for < 0, default: """ +
+      default_commit_clean_delay.seconds.toInt + """)
     -D DIR       include session directory and select its sessions
     -O DIR       output directory for dumped files (default: """ + default_output_dir + """)
     -R           operate on requirements of selected sessions
@@ -213,6 +221,7 @@
 """ + Library.prefix_lines("    ", show_aspects) + "\n",
       "A:" -> (arg => aspects = Library.distinct(space_explode(',', arg)).map(the_aspect(_))),
       "B:" -> (arg => base_sessions = base_sessions ::: List(arg)),
+      "C:" -> (arg => commit_clean_delay = Time.seconds(Value.Double.parse(arg))),
       "D:" -> (arg => select_dirs = select_dirs ::: List(Path.explode(arg))),
       "O:" -> (arg => output_dir = Path.explode(arg)),
       "R" -> (_ => requirements = true),
@@ -241,9 +250,11 @@
           dump(options, logic,
             aspects = aspects,
             progress = progress,
+            log = new File_Logger(Path.explode("$ISABELLE_HOME_USER/dump.log")),
             dirs = dirs,
             select_dirs = select_dirs,
             output_dir = output_dir,
+            commit_clean_delay = commit_clean_delay,
             verbose = verbose,
             selection = Sessions.Selection(
               requirements = requirements,