src/Pure/Admin/build_history.scala
changeset 64256 c3197aeae90b
parent 64253 a4718dfc9cd4
child 64260 5389ebfd576d
equal deleted inserted replaced
64255:a9f540881611 64256:c3197aeae90b
   329 
   329 
   330 
   330 
   331   /** remote build_history -- via command-line **/
   331   /** remote build_history -- via command-line **/
   332 
   332 
   333   def remote_build_history(
   333   def remote_build_history(
   334     session: SSH.Session,
   334     ssh: SSH.Session,
   335     isabelle_repos_self: Path,
   335     isabelle_repos_self: Path,
   336     isabelle_repos_other: Path,
   336     isabelle_repos_other: Path,
   337     isabelle_repos_source: String = "http://isabelle.in.tum.de/repos/isabelle",
   337     isabelle_repos_source: String = "http://isabelle.in.tum.de/repos/isabelle",
   338     self_update: Boolean = false,
   338     self_update: Boolean = false,
   339     progress: Progress = Ignore_Progress,
   339     progress: Progress = Ignore_Progress,
   340     options: String = "",
   340     options: String = "",
   341     args: String = ""): List[(String, Bytes)] =
   341     args: String = ""): List[(String, Bytes)] =
   342   {
   342   {
   343     using(session.sftp())(sftp =>
   343     val isabelle_admin = ssh.remote_path(isabelle_repos_self + Path.explode("Admin"))
   344       {
   344 
   345         val isabelle_admin = sftp.remote_path(isabelle_repos_self + Path.explode("Admin"))
   345 
   346 
   346     /* prepare repository clones */
   347 
   347 
   348         /* prepare repository clones */
   348     val isabelle_hg =
   349 
   349       Mercurial.setup_repository(isabelle_repos_source, isabelle_repos_self, ssh = Some(ssh))
   350         val isabelle_hg =
   350 
   351           Mercurial.setup_repository(
   351     if (self_update) {
   352             isabelle_repos_source, isabelle_repos_self, ssh = Some(session))
   352       isabelle_hg.pull()
   353 
   353       isabelle_hg.update(clean = true)
   354         if (self_update) {
   354       ssh.execute(File.bash_string(isabelle_admin + "/build") + " jars_fresh").check
   355           isabelle_hg.pull()
   355     }
   356           isabelle_hg.update(clean = true)
   356 
   357           session.execute(File.bash_string(isabelle_admin + "/build") + " jars_fresh").check
   357     Mercurial.setup_repository(
   358         }
   358       ssh.remote_path(isabelle_repos_self), isabelle_repos_other, ssh = Some(ssh))
   359 
   359 
   360         Mercurial.setup_repository(
   360 
   361           sftp.remote_path(isabelle_repos_self), isabelle_repos_other, ssh = Some(session))
   361     /* Admin/build_history */
   362 
   362 
   363 
   363     val result =
   364         /* Admin/build_history */
   364       ssh.execute(
   365 
   365         File.bash_string(isabelle_admin + "/build_history") + " " + options + " " +
   366         val result =
   366           File.bash_string(ssh.remote_path(isabelle_repos_other)) + " " + args,
   367           session.execute(
   367         progress_stderr = progress.echo(_)).check
   368             File.bash_string(isabelle_admin + "/build_history") + " " + options + " " +
   368 
   369               File.bash_string(sftp.remote_path(isabelle_repos_other)) + " " + args,
   369     for (line <- result.out_lines; log = Path.explode(line))
   370             progress_stderr = progress.echo(_)).check
   370       yield (log.base.implode, ssh.read_bytes(log))
   371 
       
   372         for (line <- result.out_lines; log = Path.explode(line))
       
   373           yield (log.base.implode, sftp.read_bytes(log))
       
   374       })
       
   375   }
   371   }
   376 }
   372 }