diff options
Diffstat (limited to 'book/src/main/scala/book/Main.scala')
-rw-r--r-- | book/src/main/scala/book/Main.scala | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/book/src/main/scala/book/Main.scala b/book/src/main/scala/book/Main.scala new file mode 100644 index 0000000..cb8ef99 --- /dev/null +++ b/book/src/main/scala/book/Main.scala @@ -0,0 +1,66 @@ +package book +import acyclic.file +import java.io.InputStream +import java.nio.file.{Paths, Files} + + + +object Main { + def write(txt: String, dest: String) = { + Paths.get(dest).toFile.getParentFile.mkdirs() + Files.deleteIfExists(Paths.get(dest)) + Files.write(Paths.get(dest), txt.getBytes) + } + def copy(src: InputStream, dest: String) = { + Paths.get(dest).toFile.getParentFile.mkdirs() + Files.deleteIfExists(Paths.get(dest)) + Files.copy(src, Paths.get(dest)) + } + + def main(args: Array[String]): Unit = { + println("Writing Book") + + write(Book.site, "output/index.html") + + val jsFiles = Book.autoResources.filter(_.endsWith(".js")).toSet + val cssFiles = Book.autoResources.filter(_.endsWith(".css")).toSet + val miscFiles = Book.autoResources -- cssFiles -- jsFiles + + for(res <- Book.manualResources ++ miscFiles) { + copy(getClass.getResourceAsStream("/" + res), "output/" + res) + } + + for((resources, dest) <- Seq(jsFiles -> "scripts.js", cssFiles -> "styles.css")) { + val blobs = for(res <- resources.iterator) yield { + io.Source.fromInputStream(getClass.getResourceAsStream("/"+res)).mkString + } + + write(blobs.mkString("\n"), "output/"+dest) + } + + val allNames = { + def rec(n: Tree[String]): Seq[String] = { + n.value +: n.children.flatMap(rec) + } + rec(sect.structure).toSet + } + val dupes = allNames.groupBy(x => x) + .values + .filter(_.size > 1) + .map(_.head) + .toSet + + assert(dupes.size == 0, s"Duplicate names: $dupes") + + val dangling = sect.usedRefs -- allNames + + assert(dangling.size == 0, s"Dangling Refs: $dangling") + + println("Writing Done") + + // can be used to verify that no links are broken + // lnk.usedLinks + } + + +} |