src/Pure/Tools/mkroot.scala
author wenzelm
Tue, 07 Apr 2020 21:49:36 +0200
changeset 71726 a5fda30edae2
parent 67069 f11486d31586
child 72375 e48d93811ed7
permissions -rw-r--r--
clarified signature: more uniform treatment of stopped/interrupted state;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/Tools/mkroot.scala
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     3
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     4
Prepare session root directory.
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     5
*/
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     6
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     7
package isabelle
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     8
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
     9
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    10
object Mkroot
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    11
{
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    12
  /** mkroot **/
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    13
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    14
  def root_name(name: String): String =
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    15
    Token.quote_name(Sessions.root_syntax.keywords, name)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    16
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    17
  def latex_name(name: String): String =
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    18
    (for (c <- name.iterator if c != '\\')
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    19
     yield if (c == '_') '-' else c).mkString
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    20
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    21
  def mkroot(
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    22
    session_name: String = "",
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    23
    session_dir: Path = Path.current,
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    24
    session_parent: String = "",
67069
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
    25
    init_repos: Boolean = false,
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    26
    title: String = "",
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    27
    author: String = "",
71726
a5fda30edae2 clarified signature: more uniform treatment of stopped/interrupted state;
wenzelm
parents: 67069
diff changeset
    28
    progress: Progress = new Progress)
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    29
  {
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    30
    Isabelle_System.mkdirs(session_dir)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    31
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    32
    val name = proper_string(session_name) getOrElse session_dir.absolute_file.getName
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    33
    val parent = proper_string(session_parent) getOrElse Isabelle_System.getenv("ISABELLE_LOGIC")
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    34
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    35
    val root_path = session_dir + Path.explode("ROOT")
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    36
    if (root_path.file.exists) error("Cannot overwrite existing " + root_path)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    37
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    38
    val document_path = session_dir + Path.explode("document")
67042
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    39
    if (document_path.file.exists) error("Cannot overwrite existing " + document_path)
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    40
67069
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
    41
    val root_tex = session_dir + Path.explode("document/root.tex")
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
    42
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
    43
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    44
    progress.echo("\nPreparing session " + quote(name) + " in " + session_dir)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    45
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    46
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    47
    /* ROOT */
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    48
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    49
    progress.echo("  creating " + root_path)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    50
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    51
    File.write(root_path,
67042
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    52
      "session " + root_name(name) + " = " + root_name(parent) + """ +
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    53
  options [document = pdf, document_output = "output"]
67042
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    54
(*theories [document = false]
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    55
    A
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    56
    B
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    57
  theories
67042
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    58
    C
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    59
    D*)
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    60
  document_files
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    61
    "root.tex"
67042
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    62
""")
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    63
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    64
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    65
    /* document directory */
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    66
67042
677cab7c2b85 adapted to changed ROOT syntax (see 13857f49d215);
wenzelm
parents: 67041
diff changeset
    67
    {
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    68
      progress.echo("  creating " + root_tex)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    69
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    70
      Isabelle_System.mkdirs(root_tex.dir)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    71
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    72
      File.write(root_tex,
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    73
"""\documentclass[11pt,a4paper]{article}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    74
\""" + """usepackage{isabelle,isabellesym}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    75
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    76
% further packages required for unusual symbols (see also
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    77
% isabellesym.sty), use only when needed
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    78
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    79
%\""" + """usepackage{amssymb}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    80
  %for \<leadsto>, \<box>, \<diamond>, \<sqsupset>, \<mho>, \<Join>,
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    81
  %\<lhd>, \<lesssim>, \<greatersim>, \<lessapprox>, \<greaterapprox>,
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    82
  %\<triangleq>, \<yen>, \<lozenge>
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    83
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    84
%\""" + """usepackage{eurosym}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    85
  %for \<euro>
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    86
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    87
%\""" + """usepackage[only,bigsqcap]{stmaryrd}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    88
  %for \<Sqinter>
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    89
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    90
%\""" + """usepackage{eufrak}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    91
  %for \<AA> ... \<ZZ>, \<aa> ... \<zz> (also included in amssymb)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    92
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    93
%\""" + """usepackage{textcomp}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    94
  %for \<onequarter>, \<onehalf>, \<threequarters>, \<degree>, \<cent>,
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    95
  %\<currency>
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    96
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    97
% this should be the last package used
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    98
\""" + """usepackage{pdfsetup}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
    99
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   100
% urls in roman style, theory text in math-similar italics
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   101
\""" + """urlstyle{rm}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   102
\isabellestyle{it}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   103
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   104
% for uniform font size
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   105
%\renewcommand{\isastyle}{\isastyleminor}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   106
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   107
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   108
\begin{document}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   109
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   110
\title{""" + (proper_string(title) getOrElse latex_name(name)) + """}
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   111
\author{""" + (proper_string(author) getOrElse latex_name(System.getProperty("user.name"))) + """}
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   112
\maketitle
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   113
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   114
\tableofcontents
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   115
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   116
% sane default for proof documents
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   117
\parindent 0pt\parskip 0.5ex
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   118
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   119
% generated text of all theories
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   120
\input{session}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   121
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   122
% optional bibliography
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   123
%\bibliographystyle{abbrv}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   124
%\bibliography{root}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   125
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   126
\end{document}
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   127
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   128
%%% Local Variables:
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   129
%%% mode: latex
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   130
%%% TeX-master: t
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   131
%%% End:
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   132
""")
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   133
    }
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   134
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   135
67069
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   136
    /* Mercurial repository */
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   137
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   138
    if (init_repos) {
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   139
      progress.echo("  \nInitializing Mercurial repository " + session_dir)
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   140
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   141
      val hg = Mercurial.init_repository(session_dir)
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   142
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   143
      val hg_ignore = session_dir + Path.explode(".hgignore")
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   144
      File.write(hg_ignore,
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   145
"""syntax: glob
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   146
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   147
*~
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   148
*.marks
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   149
*.orig
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   150
*.rej
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   151
.DS_Store
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   152
.swp
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   153
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   154
syntax: regexp
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   155
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   156
^output/
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   157
""")
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   158
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   159
      hg.add(List(root_path, root_tex, hg_ignore))
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   160
    }
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   161
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   162
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   163
    /* notes */
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   164
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   165
    {
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   166
      val print_dir = session_dir.implode
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   167
      progress.echo("""
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   168
Now use the following command line to build the session:
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   169
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   170
  isabelle build -D """ +
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   171
        (if (Bash.string(print_dir) == print_dir) print_dir else quote(print_dir)) + "\n")
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   172
    }
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   173
  }
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   174
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   175
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   176
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   177
  /** Isabelle tool wrapper **/
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   178
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   179
  val isabelle_tool = Isabelle_Tool("mkroot", "prepare session root directory", args =>
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   180
  {
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   181
    var author = ""
67069
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   182
    var init_repos = false
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   183
    var title = ""
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   184
    var session_name = ""
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   185
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   186
    val getopts = Getopts("""
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   187
Usage: isabelle mkroot [OPTIONS] [DIRECTORY]
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   188
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   189
  Options are:
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   190
    -A LATEX     provide author in LaTeX notation (default: user name)
67069
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   191
    -I           init Mercurial repository and add generated files
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   192
    -T LATEX     provide title in LaTeX notation (default: session name)
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   193
    -n NAME      alternative session name (default: directory base name)
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   194
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   195
  Prepare session root directory (default: current directory).
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   196
""",
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   197
      "A:" -> (arg => author = arg),
67069
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   198
      "I" -> (arg => init_repos = true),
67043
848672fcaee5 more options for "isabelle mkroot";
wenzelm
parents: 67042
diff changeset
   199
      "T:" -> (arg => title = arg),
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   200
      "n:" -> (arg => session_name = arg))
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   201
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   202
    val more_args = getopts(args)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   203
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   204
    val session_dir =
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   205
      more_args match {
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   206
        case Nil => Path.current
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   207
        case List(dir) => Path.explode(dir)
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   208
        case _ => getopts.usage()
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   209
      }
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   210
67069
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   211
    mkroot(session_name = session_name, session_dir = session_dir, init_repos = init_repos,
f11486d31586 init Mercurial repository for the generated session files;
wenzelm
parents: 67043
diff changeset
   212
      author = author, title = title, progress = new Console_Progress)
67041
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   213
  })
f8b0367046bd converted to Isabelle/Scala;
wenzelm
parents:
diff changeset
   214
}