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 } |