src/Pure/Admin/isabelle_cronjob.scala
changeset 65640 7a26c337e016
parent 65594 659305708959
child 65647 7cf60e2b9115
equal deleted inserted replaced
65639:4c14da234221 65640:7a26c337e016
   140             })
   140             })
   141       })
   141       })
   142   }
   142   }
   143 
   143 
   144 
   144 
       
   145   /* maintain build_log database */
       
   146 
       
   147   val database_dirs =
       
   148     List(Path.explode("~/log"), Path.explode("~/afp/log"), Path.explode("~/cronjob/log"))
       
   149 
       
   150   def database_update(options: Options)
       
   151   {
       
   152     val store = Build_Log.store(options)
       
   153     using(store.open_database())(db =>
       
   154       store.write_info(db, Build_Log.Log_File.find_files(database_dirs)))
       
   155   }
       
   156 
       
   157 
   145 
   158 
   146   /** task logging **/
   159   /** task logging **/
   147 
   160 
   148   sealed case class Logger_Task(name: String = "", body: Logger => Unit)
   161   sealed case class Logger_Task(name: String = "", body: Logger => Unit)
   149 
   162 
   196 
   209 
   197   class Logger private[Isabelle_Cronjob](
   210   class Logger private[Isabelle_Cronjob](
   198     val log_service: Log_Service, val start_date: Date, val task_name: String)
   211     val log_service: Log_Service, val start_date: Date, val task_name: String)
   199   {
   212   {
   200     def ssh_context: SSH.Context = log_service.ssh_context
   213     def ssh_context: SSH.Context = log_service.ssh_context
       
   214     def options: Options = ssh_context.options
   201 
   215 
   202     def log(date: Date, msg: String): Unit = log_service.log(date, task_name, msg)
   216     def log(date: Date, msg: String): Unit = log_service.log(date, task_name, msg)
   203 
   217 
   204     def log_end(end_date: Date, err: Option[String])
   218     def log_end(end_date: Date, err: Option[String])
   205     {
   219     {
   283 
   297 
   284     run(main_start_date,
   298     run(main_start_date,
   285       Logger_Task("isabelle_cronjob", _ =>
   299       Logger_Task("isabelle_cronjob", _ =>
   286         run_now(
   300         run_now(
   287           SEQ(List(build_release, build_history_base,
   301           SEQ(List(build_release, build_history_base,
   288             PAR(remote_builds.map(seq => SEQ(seq.map(remote_build_history(rev, _))))))))))
   302             PAR(remote_builds.map(seq => SEQ(seq.map(remote_build_history(rev, _))))),
       
   303             Logger_Task("build_log_database", logger => database_update(logger.options)))))))
   289 
   304 
   290     log_service.shutdown()
   305     log_service.shutdown()
   291 
   306 
   292     main_state_file.file.delete
   307     main_state_file.file.delete
   293   }
   308   }