handouts/build.sc
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 05 Sep 2025 16:59:48 +0100
changeset 981 14e5ae1fb541
permissions -rwxr-xr-x
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
981
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
#!/usr/bin/env amm
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
/*
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
val files = Seq("hw01.tex",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
	        "hw02.tex",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
	        "hw03.tex",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
	        "hw04.tex",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
	        "hw05.tex",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
                "hw06.tex",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
	        "hw07.tex",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
	        "hw08.tex",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
	        "hw09.tex")
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
val pdf_files = files.map(s => s.stripSuffix("tex") ++ "pdf")
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
@main
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
def make() = {
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
  for (f <- files) {
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
    println(s"Processing $f ...")
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
    os.proc("lualatex", f).call(stdout = os.Inherit, stdin = os.Inherit)
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
  }
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
@main
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
def make_sols() = {
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
  for (f <- files) {
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
    val old_pdf = f.stripSuffix(".tex") ++ ".pdf"
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
    val new_pdf = f.stripSuffix(".tex") ++ "-sol.pdf"
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
    println(s"Processing $f -> $new_pdf ...")
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
    os.proc("lualatex", f, "sol").call(stdout = os.Inherit, stdin = os.Inherit)
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
    os.move.over(os.pwd / old_pdf, os.pwd / new_pdf)
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    34
  }
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    35
}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    37
@main
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    38
def all() = {
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    39
  make_sols()
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    40
  make()
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    41
}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    42
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    43
@main
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    44
def hg() = {
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    45
  println(os.proc("hg", "commit", "-m texupdate", files ++ pdf_files).call())
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    46
  println(os.proc("hg", "push").call())
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    47
}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    48
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    49
*/
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    50
 
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    51
// extensions of files to be deleted
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    52
val todelete =
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    53
  List("fdb_latexmk",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    54
       "log",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    55
       "aux",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    56
       "xdv",
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    57
       "out", 
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    58
       "fls")
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    59
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    60
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    61
@main
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    62
def clean() = {
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    63
  for (f <- os.list.stream(os.pwd) if todelete.contains(f.ext)) {
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    64
    println(s"Delete: ${f.last}")
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    65
    os.remove(f)
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    66
  }
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    67
}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    68