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 using(session.sftp())(sftp => |
344 { |
344 { |
345 val isabelle_admin = (isabelle_repos_self + Path.explode("Admin")).implode |
345 val isabelle_admin = sftp.path(isabelle_repos_self + Path.explode("Admin")) |
346 |
346 |
347 |
347 |
348 /* prepare repository clones */ |
348 /* prepare repository clones */ |
349 |
349 |
350 val ssh = Some(session) |
|
351 |
|
352 val isabelle_hg = |
350 val isabelle_hg = |
353 if (sftp.stat(isabelle_repos_self.implode).nonEmpty) |
351 Mercurial.setup_repository( |
354 Mercurial.repository(isabelle_repos_self, ssh = ssh) |
352 isabelle_repos_source, isabelle_repos_self, ssh = Some(session)) |
355 else |
|
356 Mercurial.clone_repository(isabelle_repos_source, isabelle_repos_self, ssh = ssh) |
|
357 |
353 |
358 if (self_update) { |
354 if (self_update) { |
359 isabelle_hg.pull() |
355 isabelle_hg.pull() |
360 isabelle_hg.update(clean = true) |
356 isabelle_hg.update(clean = true) |
361 session.execute(File.bash_string(isabelle_admin + "/build") + " jars_fresh").check |
357 session.execute(File.bash_string(isabelle_admin + "/build") + " jars_fresh").check |
362 } |
358 } |
363 |
359 |
364 if (sftp.stat(isabelle_repos_other.implode).isEmpty) |
360 Mercurial.setup_repository( |
365 Mercurial.clone_repository(isabelle_repos_self.implode, isabelle_repos_other, ssh = ssh) |
361 sftp.path(isabelle_repos_self), isabelle_repos_other, ssh = Some(session)) |
366 |
362 |
367 |
363 |
368 /* Admin/build_history */ |
364 /* Admin/build_history */ |
369 |
365 |
370 val result = |
366 val result = |
371 session.execute( |
367 session.execute( |
372 File.bash_string(isabelle_admin + "/build_history") + " " + options + " " + |
368 File.bash_string(isabelle_admin + "/build_history") + " " + options + " " + |
373 File.bash_path(isabelle_repos_other) + " " + args, |
369 File.bash_string(sftp.path(isabelle_repos_other)) + " " + args, |
374 progress_stderr = progress.echo(_)) |
370 progress_stderr = progress.echo(_)) |
375 |
371 |
376 result.check.out_lines.map(log => (Path.explode(log).base.implode, sftp.read_bytes(log))) |
372 result.check.out_lines.map(log => (Path.explode(log).base.implode, sftp.read_bytes(log))) |
377 }) |
373 }) |
378 } |
374 } |