equal
deleted
inserted
replaced
262 session_name: String, |
262 session_name: String, |
263 export_dir: Path, |
263 export_dir: Path, |
264 progress: Progress = No_Progress, |
264 progress: Progress = No_Progress, |
265 export_prune: Int = 0, |
265 export_prune: Int = 0, |
266 export_list: Boolean = false, |
266 export_list: Boolean = false, |
267 export_patterns: List[String] = Nil, |
267 export_patterns: List[String] = Nil) |
268 export_prefix: String = "") |
|
269 { |
268 { |
270 using(store.open_database(session_name))(db => |
269 using(store.open_database(session_name))(db => |
271 { |
270 { |
272 db.transaction { |
271 db.transaction { |
273 val export_names = read_theory_exports(db, session_name) |
272 val export_names = read_theory_exports(db, session_name) |
296 if (elems.length < export_prune + 1) { |
295 if (elems.length < export_prune + 1) { |
297 error("Cannot prune path by " + export_prune + " element(s): " + Path.make(elems)) |
296 error("Cannot prune path by " + export_prune + " element(s): " + Path.make(elems)) |
298 } |
297 } |
299 else export_dir + Path.make(elems.drop(export_prune)) |
298 else export_dir + Path.make(elems.drop(export_prune)) |
300 |
299 |
301 progress.echo(export_prefix + "export " + path) |
300 progress.echo("export " + path + (if (entry.executable) " (executable)" else "")) |
302 Isabelle_System.mkdirs(path.dir) |
301 Isabelle_System.mkdirs(path.dir) |
303 Bytes.write(path, entry.uncompressed(cache = store.xz_cache)) |
302 Bytes.write(path, entry.uncompressed(cache = store.xz_cache)) |
304 File.set_executable(path, entry.executable) |
303 File.set_executable(path, entry.executable) |
305 } |
304 } |
306 } |
305 } |