src/Pure/Tools/server_commands.scala
author wenzelm
Tue, 13 Mar 2018 21:04:42 +0100
changeset 67852 f701a1d5d852
parent 67850 3e9fe7a84b5d
child 67853 74e2a4b62826
permissions -rw-r--r--
allow cancellation of Sessions.deps/base_info via progress.stopped (progress.echo only happens for options like "verbose");
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
67848
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/Tools/server_commands.scala
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     3
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     4
Miscellaneous Isabelle server commands.
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     5
*/
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     6
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     7
package isabelle
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     8
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
     9
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    10
object Server_Commands
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    11
{
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    12
  object Session_Build
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    13
  {
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    14
    sealed case class Args(
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    15
      session: String,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    16
      prefs: String = "",
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    17
      opts: List[String] = Nil,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    18
      dirs: List[String] = Nil,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    19
      ancestor_session: String = "",
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    20
      all_known: Boolean = false,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    21
      focus_session: Boolean = false,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    22
      required_session: Boolean = false,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    23
      system_mode: Boolean = false)
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    24
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    25
    def unapply(json: JSON.T): Option[Args] =
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    26
      for {
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    27
        session <- JSON.string(json, "session")
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    28
        prefs <- JSON.string_default(json, "preferences")
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    29
        opts <- JSON.list_default(json, "options", JSON.Value.String.unapply _)
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    30
        dirs <- JSON.list_default(json, "dirs", JSON.Value.String.unapply _)
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    31
        ancestor_session <- JSON.string_default(json, "ancestor_session")
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    32
        all_known <- JSON.bool_default(json, "all_known")
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    33
        focus_session <- JSON.bool_default(json, "focus_session")
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    34
        required_session <- JSON.bool_default(json, "required_session")
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    35
        system_mode <- JSON.bool_default(json, "system_mode")
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    36
      }
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    37
      yield {
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    38
        Args(session, prefs = prefs, opts = opts, dirs = dirs, ancestor_session = ancestor_session,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    39
          all_known = all_known, focus_session = focus_session, required_session = required_session,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    40
          system_mode = system_mode)
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    41
      }
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    42
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    43
    def command(progress: Progress, args: Args): (JSON.T, Sessions.Base_Info, Build.Results) =
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    44
    {
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    45
      val options = Options.init(prefs = args.prefs, opts = args.opts)
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    46
      val dirs = args.dirs.map(Path.explode(_))
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    47
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    48
      val base_info =
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    49
        Sessions.base_info(options,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    50
          args.session,
67852
f701a1d5d852 allow cancellation of Sessions.deps/base_info via progress.stopped (progress.echo only happens for options like "verbose");
wenzelm
parents: 67850
diff changeset
    51
          progress = progress,
67848
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    52
          dirs = dirs,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    53
          ancestor_session = proper_string(args.ancestor_session),
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    54
          all_known = args.all_known,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    55
          focus_session = args.focus_session,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    56
          required_session = args.required_session)
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    57
      val base = base_info.check_base
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    58
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    59
      val results =
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    60
        Build.build(options,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    61
          progress = progress,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    62
          build_heap = true,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    63
          system_mode = args.system_mode,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    64
          dirs = dirs,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    65
          infos = base_info.infos,
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    66
          sessions = List(args.session))
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    67
67850
3e9fe7a84b5d tuned signature;
wenzelm
parents: 67848
diff changeset
    68
      (JSON.Object("rc" -> results.rc), base_info, results)
67848
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    69
    }
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    70
  }
dd83610333de added server command "session_build": similar to JEdit_Resources.session_build;
wenzelm
parents:
diff changeset
    71
}