| author | wenzelm | 
| Sun, 04 Feb 2024 21:51:30 +0100 | |
| changeset 79573 | 0e7dd3eaa6e8 | 
| parent 79569 | b5d199871f2f | 
| child 79620 | 3914bca631b9 | 
| permissions | -rw-r--r-- | 
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 1 | /* Title: Pure/System/isabelle_tool.scala | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 2 | Author: Makarius | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 3 | |
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 4 | Isabelle system tools: external executables or internal Scala functions. | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 5 | */ | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 6 | |
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 7 | package isabelle | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 8 | |
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 9 | |
| 75393 | 10 | object Isabelle_Tool {
 | 
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 11 | /* external tools */ | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 12 | |
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 13 |   private def dirs(): List[Path] = Path.split(Isabelle_System.getenv_strict("ISABELLE_TOOLS"))
 | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 14 | |
| 75642 
bb048086468a
discontinued Isabelle tools implemented as .scala scripts;
 wenzelm parents: 
75628diff
changeset | 15 |   private def is_external(dir: Path, name: String): Boolean = {
 | 
| 
bb048086468a
discontinued Isabelle tools implemented as .scala scripts;
 wenzelm parents: 
75628diff
changeset | 16 | val file = (dir + Path.explode(name)).file | 
| 75906 
2167b9e3157a
clarified signature: support for adhoc file types;
 wenzelm parents: 
75644diff
changeset | 17 |     try { file.isFile && file.canRead && file.canExecute && !File.is_backup(name) }
 | 
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 18 |     catch { case _: SecurityException => false }
 | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 19 | } | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 20 | |
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 21 | private def find_external(name: String): Option[List[String] => Unit] = | 
| 75394 | 22 | dirs().collectFirst( | 
| 23 |       {
 | |
| 24 | case dir if is_external(dir, name) => | |
| 25 |           { (args: List[String]) =>
 | |
| 26 | val tool = dir + Path.explode(name) | |
| 27 | val result = Isabelle_System.bash(File.bash_path(tool) + " " + Bash.strings(args)) | |
| 28 | sys.exit(result.print_stdout.rc) | |
| 29 | } | |
| 30 | }) | |
| 62830 | 31 | |
| 32 | ||
| 33 | /* internal tools */ | |
| 34 | ||
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 35 | private lazy val internal_tools: List[Isabelle_Tool] = | 
| 72159 
40b5ee5889d2
clarified management of services: static declarations vs. dynamic instances (e.g. relevant for stateful Session.Protocol_Handler, notably Scala.Handler and session "System");
 wenzelm parents: 
71808diff
changeset | 36 | Isabelle_System.make_services(classOf[Isabelle_Scala_Tools]).flatMap(_.tools) | 
| 62830 | 37 | |
| 38 | private def find_internal(name: String): Option[List[String] => Unit] = | |
| 62960 
cfbb6a5b427c
simplified -- avoid odd mutable state, which potentially causes problems with module initialization;
 wenzelm parents: 
62838diff
changeset | 39 |     internal_tools.collectFirst({
 | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 40 | case tool if tool.name == name => | 
| 71632 | 41 |         args => Command_Line.tool { tool.body(args) }
 | 
| 62960 
cfbb6a5b427c
simplified -- avoid odd mutable state, which potentially causes problems with module initialization;
 wenzelm parents: 
62838diff
changeset | 42 | }) | 
| 62831 | 43 | |
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 44 | |
| 72763 | 45 | /* list tools */ | 
| 46 | ||
| 75393 | 47 |   abstract class Entry {
 | 
| 72763 | 48 | def name: String | 
| 49 | def position: Properties.T | |
| 50 | def description: String | |
| 51 | def print: String = | |
| 52 |       description match {
 | |
| 53 | case "" => name | |
| 54 | case descr => name + " - " + descr | |
| 55 | } | |
| 56 | } | |
| 57 | ||
| 75393 | 58 |   sealed case class External(name: String, path: Path) extends Entry {
 | 
| 72763 | 59 | def position: Properties.T = Position.File(path.absolute.implode) | 
| 75393 | 60 |     def description: String = {
 | 
| 72763 | 61 | val Pattern = """.*\bDESCRIPTION: *(.*)""".r | 
| 62 |       split_lines(File.read(path)).collectFirst({ case Pattern(s) => s }) getOrElse ""
 | |
| 63 | } | |
| 64 | } | |
| 65 | ||
| 75393 | 66 |   def external_tools(): List[External] = {
 | 
| 72763 | 67 |     for {
 | 
| 68 | dir <- dirs() if dir.is_dir | |
| 75642 
bb048086468a
discontinued Isabelle tools implemented as .scala scripts;
 wenzelm parents: 
75628diff
changeset | 69 | name <- File.read_dir(dir) if is_external(dir, name) | 
| 
bb048086468a
discontinued Isabelle tools implemented as .scala scripts;
 wenzelm parents: 
75628diff
changeset | 70 | } yield External(name, dir + Path.explode(name)) | 
| 72763 | 71 | } | 
| 72 | ||
| 73 | def isabelle_tools(): List[Entry] = | |
| 74 | (external_tools() ::: internal_tools).sortBy(_.name) | |
| 75 | ||
| 75393 | 76 |   object Isabelle_Tools extends Scala.Fun_String("isabelle_tools") {
 | 
| 72763 | 77 | val here = Scala_Project.here | 
| 78 | def apply(arg: String): String = | |
| 79 |       if (arg.nonEmpty) error("Bad argument: " + quote(arg))
 | |
| 80 |       else {
 | |
| 81 | val result = isabelle_tools().map(entry => (entry.name, entry.position)) | |
| 82 |         val body = { import XML.Encode._; list(pair(string, properties))(result) }
 | |
| 83 | YXML.string_of_body(body) | |
| 84 | } | |
| 85 | } | |
| 86 | ||
| 87 | ||
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 88 | /* command line entry point */ | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 89 | |
| 75393 | 90 |   def main(args: Array[String]): Unit = {
 | 
| 71632 | 91 |     Command_Line.tool {
 | 
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 92 |       args.toList match {
 | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 93 |         case Nil | List("-?") =>
 | 
| 72763 | 94 | val tool_descriptions = isabelle_tools().map(_.print) | 
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 95 |           Getopts("""
 | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 96 | Usage: isabelle TOOL [ARGS ...] | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 97 | |
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 98 | Start Isabelle TOOL with ARGS; pass "-?" for tool-specific help. | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 99 | |
| 73367 | 100 | Available tools:""" + tool_descriptions.mkString("\n  ", "\n  ", "\n")).usage()
 | 
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 101 | case tool_name :: tool_args => | 
| 62830 | 102 |           find_external(tool_name) orElse find_internal(tool_name) match {
 | 
| 103 | case Some(tool) => tool(tool_args) | |
| 62829 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 104 |             case None => error("Unknown Isabelle tool: " + quote(tool_name))
 | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 105 | } | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 106 | } | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 107 | } | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 108 | } | 
| 
4141c2a8458b
clarified Isabelle tool wrapper: bash, Scala, no perl, no ML;
 wenzelm parents: diff
changeset | 109 | } | 
| 62830 | 110 | |
| 72763 | 111 | sealed case class Isabelle_Tool( | 
| 112 | name: String, | |
| 113 | description: String, | |
| 114 | here: Scala_Project.Here, | |
| 75393 | 115 | body: List[String] => Unit | 
| 116 | ) extends Isabelle_Tool.Entry {
 | |
| 72763 | 117 | def position: Position.T = here.position | 
| 118 | } | |
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 119 | |
| 71736 | 120 | class Isabelle_Scala_Tools(val tools: Isabelle_Tool*) extends Isabelle_System.Service | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 121 | |
| 69810 | 122 | class Tools extends Isabelle_Scala_Tools( | 
| 78840 
4b528ca25573
added initial version of benchmark module, e.g., to compare performance of different hosts;
 Fabian Huch <huch@in.tum.de> parents: 
78746diff
changeset | 123 | Benchmark.isabelle_tool, | 
| 77553 | 124 | Build.isabelle_tool1, | 
| 125 | Build.isabelle_tool2, | |
| 77557 | 126 | Build.isabelle_tool3, | 
| 78562 | 127 | Build.isabelle_tool4, | 
| 79182 
6202d0ff36b4
added build schedule command-line wrapper;
 Fabian Huch <huch@in.tum.de> parents: 
78854diff
changeset | 128 | Build_Schedule.isabelle_tool, | 
| 76222 
3c4e373922ca
restructured ci profile into modular ci build system;
 Fabian Huch <huch@in.tum.de> parents: 
76075diff
changeset | 129 | CI_Build.isabelle_tool, | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 130 | Doc.isabelle_tool, | 
| 77567 
b975f5aaf6b8
renamed "isabelle build_docker" to "isabelle docker_build" (unrelated to "isabelle build");
 wenzelm parents: 
77566diff
changeset | 131 | Docker_Build.isabelle_tool, | 
| 73718 | 132 | Document_Build.isabelle_tool, | 
| 76480 | 133 | Dotnet_Setup.isabelle_tool, | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 134 | Dump.isabelle_tool, | 
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 135 | Export.isabelle_tool, | 
| 77564 | 136 | Logo.isabelle_tool, | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 137 | ML_Process.isabelle_tool, | 
| 75474 | 138 | Mercurial.isabelle_tool1, | 
| 139 | Mercurial.isabelle_tool2, | |
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 140 | Mkroot.isabelle_tool, | 
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 141 | Options.isabelle_tool, | 
| 70967 | 142 | Phabricator.isabelle_tool1, | 
| 143 | Phabricator.isabelle_tool2, | |
| 71097 | 144 | Phabricator.isabelle_tool3, | 
| 71109 
8c1c717a830b
configure SSH hosting via "isabelle phabricator_setup_ssh";
 wenzelm parents: 
71097diff
changeset | 145 | Phabricator.isabelle_tool4, | 
| 78315 | 146 | Profiling.isabelle_tool, | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 147 | Profiling_Report.isabelle_tool, | 
| 77564 | 148 | Scala_Project.isabelle_tool, | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 149 | Server.isabelle_tool, | 
| 71808 | 150 | Sessions.isabelle_tool, | 
| 75555 
197a5b3a1ea2
promote "isabelle sync" to regular user-space tool, with proper documentation;
 wenzelm parents: 
75549diff
changeset | 151 | Sync.isabelle_tool, | 
| 69557 | 152 | Update.isabelle_tool, | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 153 | Update_Cartouches.isabelle_tool, | 
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 154 | Update_Comments.isabelle_tool, | 
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 155 | Update_Header.isabelle_tool, | 
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 156 | Update_Then.isabelle_tool, | 
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 157 | Update_Theorems.isabelle_tool, | 
| 73691 
2f9877db82a1
reimplemented Mirabelle as Isabelle/ML presentation hook + Isabelle/Scala tool, but sledgehammer is still inactive;
 wenzelm parents: 
73653diff
changeset | 158 | isabelle.mirabelle.Mirabelle.isabelle_tool, | 
| 75562 | 159 | isabelle.vscode.Language_Server.isabelle_tool, | 
| 160 | isabelle.vscode.VSCode_Main.isabelle_tool) | |
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 161 | |
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 162 | class Admin_Tools extends Isabelle_Scala_Tools( | 
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 163 | Build_Doc.isabelle_tool, | 
| 77749 | 164 | Build_Log.isabelle_tool, | 
| 69277 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 165 | Build_Status.isabelle_tool, | 
| 
258bef08b31e
support for user-defined Isabelle/Scala command-line tools;
 wenzelm parents: 
69168diff
changeset | 166 | Check_Sources.isabelle_tool, | 
| 77566 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 167 | Component_CSDP.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 168 | Component_CVC5.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 169 | Component_Cygwin.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 170 | Component_E.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 171 | Component_EPTCS.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 172 | Component_Easychair.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 173 | Component_Foiltex.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 174 | Component_Fonts.isabelle_tool, | 
| 78746 
a748a244a028
add component build tool for hugo from afp-devel;
 Fabian Huch <huch@in.tum.de> parents: 
78562diff
changeset | 175 | Component_Hugo.isabelle_tool, | 
| 78827 
06f0e720b913
added component for javax mail;
 Fabian Huch <huch@in.tum.de> parents: 
78746diff
changeset | 176 | Component_Javamail.isabelle_tool, | 
| 77566 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 177 | Component_JDK.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 178 | Component_JEdit.isabelle_tool, | 
| 77619 
6d0985955872
discontinued apache-commons in favour of jsoup, which is smaller and more useful;
 wenzelm parents: 
77567diff
changeset | 179 | Component_Jsoup.isabelle_tool, | 
| 77566 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 180 | Component_LIPIcs.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 181 | Component_LLNCS.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 182 | Component_Minisat.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 183 | Component_PDFjs.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 184 | Component_PolyML.isabelle_tool1, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 185 | Component_PolyML.isabelle_tool2, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 186 | Component_PostgreSQL.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 187 | Component_Prismjs.isabelle_tool, | 
| 77753 
2b5b093a1c08
build rsync from sources, to avoid divergence of protocols on various platforms;
 wenzelm parents: 
77749diff
changeset | 188 | Component_Rsync.isabelle_tool, | 
| 77566 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 189 | Component_SPASS.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 190 | Component_SQLite.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 191 | Component_Scala.isabelle_tool, | 
| 78301 | 192 | Component_Stack.isabelle_tool, | 
| 77566 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 193 | Component_Vampire.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 194 | Component_VeriT.isabelle_tool, | 
| 79569 
b5d199871f2f
build Isabelle windows_app component from GNU binutils and launch4j;
 wenzelm parents: 
79182diff
changeset | 195 | Component_Windows_App.isabelle_tool, | 
| 77566 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 196 | Component_Zipperposition.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 197 | Component_Zstd.isabelle_tool, | 
| 69429 
dc5fbcb07c7b
replaced "isabelle components_checksum" shell script by "isabelle build_components" in Scala, with more functionality;
 wenzelm parents: 
69401diff
changeset | 198 | Components.isabelle_tool, | 
| 77566 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 199 | isabelle.vscode.Component_VSCode.isabelle_tool, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 200 | isabelle.vscode.Component_VSCodium.isabelle_tool1, | 
| 
2a99fcb283ee
renamed administrative tools to build Isabelle components (unrelated to "isabelle build");
 wenzelm parents: 
77564diff
changeset | 201 | isabelle.vscode.Component_VSCodium.isabelle_tool2) |