equal
deleted
inserted
replaced
320 var dirs: List[Path] = Nil |
320 var dirs: List[Path] = Nil |
321 var export_list = false |
321 var export_list = false |
322 var no_build = false |
322 var no_build = false |
323 var options = Options.init() |
323 var options = Options.init() |
324 var export_prune = 0 |
324 var export_prune = 0 |
325 var system_mode = false |
|
326 var export_patterns: List[String] = Nil |
325 var export_patterns: List[String] = Nil |
327 |
326 |
328 val getopts = Getopts(""" |
327 val getopts = Getopts(""" |
329 Usage: isabelle export [OPTIONS] SESSION |
328 Usage: isabelle export [OPTIONS] SESSION |
330 |
329 |
333 -d DIR include session directory |
332 -d DIR include session directory |
334 -l list exports |
333 -l list exports |
335 -n no build of session |
334 -n no build of session |
336 -o OPTION override Isabelle system OPTION (via NAME=VAL or NAME) |
335 -o OPTION override Isabelle system OPTION (via NAME=VAL or NAME) |
337 -p NUM prune path of exported files by NUM elements |
336 -p NUM prune path of exported files by NUM elements |
338 -s system build mode for session image |
|
339 -x PATTERN extract files matching pattern (e.g. "*:**" for all) |
337 -x PATTERN extract files matching pattern (e.g. "*:**" for all) |
340 |
338 |
341 List or export theory exports for SESSION: named blobs produced by |
339 List or export theory exports for SESSION: named blobs produced by |
342 isabelle build. Option -l or -x is required; option -x may be repeated. |
340 isabelle build. Option -l or -x is required; option -x may be repeated. |
343 |
341 |
349 "d:" -> (arg => dirs = dirs ::: List(Path.explode(arg))), |
347 "d:" -> (arg => dirs = dirs ::: List(Path.explode(arg))), |
350 "l" -> (_ => export_list = true), |
348 "l" -> (_ => export_list = true), |
351 "n" -> (_ => no_build = true), |
349 "n" -> (_ => no_build = true), |
352 "o:" -> (arg => options = options + arg), |
350 "o:" -> (arg => options = options + arg), |
353 "p:" -> (arg => export_prune = Value.Int.parse(arg)), |
351 "p:" -> (arg => export_prune = Value.Int.parse(arg)), |
354 "s" -> (_ => system_mode = true), |
|
355 "x:" -> (arg => export_patterns ::= arg)) |
352 "x:" -> (arg => export_patterns ::= arg)) |
356 |
353 |
357 val more_args = getopts(args) |
354 val more_args = getopts(args) |
358 val session_name = |
355 val session_name = |
359 more_args match { |
356 more_args match { |
367 /* build */ |
364 /* build */ |
368 |
365 |
369 if (!no_build) { |
366 if (!no_build) { |
370 val rc = |
367 val rc = |
371 progress.interrupt_handler { |
368 progress.interrupt_handler { |
372 Build.build_logic(options, session_name, progress = progress, |
369 Build.build_logic(options, session_name, progress = progress, dirs = dirs) |
373 dirs = dirs, system_mode = system_mode) |
|
374 } |
370 } |
375 if (rc != 0) sys.exit(rc) |
371 if (rc != 0) sys.exit(rc) |
376 } |
372 } |
377 |
373 |
378 |
374 |
379 /* export files */ |
375 /* export files */ |
380 |
376 |
381 val store = Sessions.store(options, system_mode) |
377 val store = Sessions.store(options) |
382 export_files(store, session_name, export_dir, progress = progress, export_prune = export_prune, |
378 export_files(store, session_name, export_dir, progress = progress, export_prune = export_prune, |
383 export_list = export_list, export_patterns = export_patterns) |
379 export_list = export_list, export_patterns = export_patterns) |
384 }) |
380 }) |
385 } |
381 } |