src/Pure/Thy/export.scala
changeset 69854 cc0b3e177b49
parent 69811 18f61ce86425
child 70499 f389019024ce
equal deleted inserted replaced
69853:f7c9a1be333f 69854:cc0b3e177b49
   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 }