From 67caba8dd2fb129381053a2ddbcd86575769d422 Mon Sep 17 00:00:00 2001 From: rhpvorderman Date: Wed, 10 Jan 2018 16:42:05 +0100 Subject: [PATCH 01/13] Choose laika 0.7.5 for sbt 1.x --- build.sbt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index cbbd30c..5e36df0 100644 --- a/build.sbt +++ b/build.sbt @@ -42,7 +42,15 @@ libraryDependencies ++= { (scalaBinaryVersion in pluginCrossBuild).value ) ) - } else Nil + } else { + Seq( + Defaults.sbtPluginExtra( + "org.planet42" % "laika-sbt" % "0.7.5", + (sbtBinaryVersion in pluginCrossBuild).value, + (scalaBinaryVersion in pluginCrossBuild).value + ) + ) + } } enablePlugins(ParadoxSitePlugin, ParadoxMaterialThemePlugin) From 118cf04ef96dd60c87ed057595da02b340996f33 Mon Sep 17 00:00:00 2001 From: rhpvorderman Date: Wed, 10 Jan 2018 17:05:30 +0100 Subject: [PATCH 02/13] nearly ported the plugin --- .../sbt/site/laika/LaikaSitePlugin.scala | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala diff --git a/src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala new file mode 100644 index 0000000..43eb97a --- /dev/null +++ b/src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala @@ -0,0 +1,52 @@ +package com.typesafe.sbt.site.laika + +import java.io.File + +import sbt._ +import Keys._ +import com.typesafe.sbt.site.SitePlugin +import com.typesafe.sbt.site.util.SiteHelpers +import com.typesafe.sbt.site.SitePlugin.autoImport.siteSubdirName +import com.typesafe.sbt.site.SitePlugin.autoImport.makeSite +import laika.sbt.LaikaPlugin.autoImport.{Laika, laikaHTML, laikaSite } + +object LaikaSitePlugin extends AutoPlugin { + override def requires = SitePlugin + override def trigger = noTrigger + + object autoImport { + val LaikaSite = config("laikaSite") + } + import autoImport._ + + override def projectSettings = laikaSettings(LaikaSite) + + /** Creates settings necessary for running Laika in the given configuration. */ + def laikaSettings(config: Configuration): Seq[Setting[_]] = + inConfig(config)( + Seq( + includeFilter := AllPassFilter, + excludeFilter := HiddenFileFilter, + mappings := generate( + target.value, + includeFilter.value, + excludeFilter.value + ), + siteSubdirName := "", + target in ( Laika, laikaSite) := (target in makeSite).value, + sourceDirectories in Laika := Seq(sourceDirectory.value) + ) + ) ++ + SiteHelpers.directorySettings(config) ++ + SiteHelpers.watchSettings(config) ++ + SiteHelpers.addMappingsToSiteDir(mappings in config, siteSubdirName in config) ++ + Seq( + makeSite := makeSite.dependsOn(laikaHTML).value + ) + + private def generate(target: File, inc: FileFilter, exc: FileFilter): Seq[(File, String)] = { + // Figure out what was generated. + val files = (target ** inc) --- (target ** exc) --- target + files pair relativeTo(target) + } +} From 5a19cfe60c41fe1ee74d34b41cfa249978b3a676 Mon Sep 17 00:00:00 2001 From: rhpvorderman Date: Thu, 11 Jan 2018 09:45:25 +0100 Subject: [PATCH 03/13] remove build properties, add Path.relativeTo import --- src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala | 1 + src/sbt-test/laika/blog-post/project/build.properties | 1 - src/sbt-test/laika/minimal/project/build.properties | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 src/sbt-test/laika/blog-post/project/build.properties delete mode 100644 src/sbt-test/laika/minimal/project/build.properties diff --git a/src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala index 43eb97a..3e447e7 100644 --- a/src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala +++ b/src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala @@ -9,6 +9,7 @@ import com.typesafe.sbt.site.util.SiteHelpers import com.typesafe.sbt.site.SitePlugin.autoImport.siteSubdirName import com.typesafe.sbt.site.SitePlugin.autoImport.makeSite import laika.sbt.LaikaPlugin.autoImport.{Laika, laikaHTML, laikaSite } +import Path.relativeTo object LaikaSitePlugin extends AutoPlugin { override def requires = SitePlugin diff --git a/src/sbt-test/laika/blog-post/project/build.properties b/src/sbt-test/laika/blog-post/project/build.properties deleted file mode 100644 index c091b86..0000000 --- a/src/sbt-test/laika/blog-post/project/build.properties +++ /dev/null @@ -1 +0,0 @@ -sbt.version=0.13.16 diff --git a/src/sbt-test/laika/minimal/project/build.properties b/src/sbt-test/laika/minimal/project/build.properties deleted file mode 100644 index c091b86..0000000 --- a/src/sbt-test/laika/minimal/project/build.properties +++ /dev/null @@ -1 +0,0 @@ -sbt.version=0.13.16 From f00fab6172893e6b3b3c90259673d0900d2e1ee5 Mon Sep 17 00:00:00 2001 From: rhpvorderman Date: Thu, 11 Jan 2018 10:32:20 +0100 Subject: [PATCH 04/13] ensure cross compatability --- .../com/typesafe/sbt/site/laika/LaikaSitePlugin.scala | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/{scala => scala-sbt-1.0}/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala (100%) diff --git a/src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala similarity index 100% rename from src/main/scala/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala rename to src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala From fab43f2ca8df3c35dd965ca384c4b0ce952689e2 Mon Sep 17 00:00:00 2001 From: rhpvorderman Date: Thu, 11 Jan 2018 10:45:22 +0100 Subject: [PATCH 05/13] ensure compatibility --- .../sbt/site/laika/LaikaSitePlugin.scala | 1 + .../{laika => laika_0.13}/blog-post/README.md | 0 .../{laika => laika_0.13}/blog-post/build.sbt | 0 .../blog-post/project/CustomDirectives.scala | 0 .../blog-post/project/build.properties | 1 + .../blog-post/project/plugins.sbt | 0 .../blog-post/src/blog/default.template.html | 0 .../blog-post/src/blog/index.md | 0 .../blog-post/src/blog/topics/directory.conf | 0 .../blog-post/src/blog/topics/post-1.md | 0 .../blog-post/src/blog/topics/post-2.md | 0 .../{laika => laika_0.13}/blog-post/test | 0 .../{laika => laika_0.13}/minimal/build.sbt | 0 .../minimal/project/build.properties | 1 + .../minimal/project/plugins.sbt | 0 .../minimal/src/laikaSite/index.md | 0 .../{laika => laika_0.13}/minimal/test | 0 src/sbt-test/laika_1.x/blog-post/README.md | 1 + src/sbt-test/laika_1.x/blog-post/build.sbt | 34 ++++ .../blog-post/project/CustomDirectives.scala | 55 ++++++ .../blog-post/project/build.properties | 1 + .../laika_1.x/blog-post/project/plugins.sbt | 1 + .../blog-post/src/blog/default.template.html | 159 ++++++++++++++++++ .../laika_1.x/blog-post/src/blog/index.md | 5 + .../blog-post/src/blog/topics/directory.conf | 4 + .../blog-post/src/blog/topics/post-1.md | 8 + .../blog-post/src/blog/topics/post-2.md | 10 ++ src/sbt-test/laika_1.x/blog-post/test | 2 + src/sbt-test/laika_1.x/minimal/build.sbt | 22 +++ .../minimal/project/build.properties | 1 + .../laika_1.x/minimal/project/plugins.sbt | 1 + .../laika_1.x/minimal/src/laikaSite/index.md | 3 + src/sbt-test/laika_1.x/minimal/test | 2 + 33 files changed, 312 insertions(+) rename src/sbt-test/{laika => laika_0.13}/blog-post/README.md (100%) rename src/sbt-test/{laika => laika_0.13}/blog-post/build.sbt (100%) rename src/sbt-test/{laika => laika_0.13}/blog-post/project/CustomDirectives.scala (100%) create mode 100644 src/sbt-test/laika_0.13/blog-post/project/build.properties rename src/sbt-test/{laika => laika_0.13}/blog-post/project/plugins.sbt (100%) rename src/sbt-test/{laika => laika_0.13}/blog-post/src/blog/default.template.html (100%) rename src/sbt-test/{laika => laika_0.13}/blog-post/src/blog/index.md (100%) rename src/sbt-test/{laika => laika_0.13}/blog-post/src/blog/topics/directory.conf (100%) rename src/sbt-test/{laika => laika_0.13}/blog-post/src/blog/topics/post-1.md (100%) rename src/sbt-test/{laika => laika_0.13}/blog-post/src/blog/topics/post-2.md (100%) rename src/sbt-test/{laika => laika_0.13}/blog-post/test (100%) rename src/sbt-test/{laika => laika_0.13}/minimal/build.sbt (100%) create mode 100644 src/sbt-test/laika_0.13/minimal/project/build.properties rename src/sbt-test/{laika => laika_0.13}/minimal/project/plugins.sbt (100%) rename src/sbt-test/{laika => laika_0.13}/minimal/src/laikaSite/index.md (100%) rename src/sbt-test/{laika => laika_0.13}/minimal/test (100%) create mode 100644 src/sbt-test/laika_1.x/blog-post/README.md create mode 100644 src/sbt-test/laika_1.x/blog-post/build.sbt create mode 100644 src/sbt-test/laika_1.x/blog-post/project/CustomDirectives.scala create mode 100644 src/sbt-test/laika_1.x/blog-post/project/build.properties create mode 100644 src/sbt-test/laika_1.x/blog-post/project/plugins.sbt create mode 100644 src/sbt-test/laika_1.x/blog-post/src/blog/default.template.html create mode 100644 src/sbt-test/laika_1.x/blog-post/src/blog/index.md create mode 100644 src/sbt-test/laika_1.x/blog-post/src/blog/topics/directory.conf create mode 100644 src/sbt-test/laika_1.x/blog-post/src/blog/topics/post-1.md create mode 100644 src/sbt-test/laika_1.x/blog-post/src/blog/topics/post-2.md create mode 100644 src/sbt-test/laika_1.x/blog-post/test create mode 100644 src/sbt-test/laika_1.x/minimal/build.sbt create mode 100644 src/sbt-test/laika_1.x/minimal/project/build.properties create mode 100644 src/sbt-test/laika_1.x/minimal/project/plugins.sbt create mode 100644 src/sbt-test/laika_1.x/minimal/src/laikaSite/index.md create mode 100644 src/sbt-test/laika_1.x/minimal/test diff --git a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala index 3e447e7..0f3cdf1 100644 --- a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala +++ b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala @@ -17,6 +17,7 @@ object LaikaSitePlugin extends AutoPlugin { object autoImport { val LaikaSite = config("laikaSite") + val bla = config("mundoBla") } import autoImport._ diff --git a/src/sbt-test/laika/blog-post/README.md b/src/sbt-test/laika_0.13/blog-post/README.md similarity index 100% rename from src/sbt-test/laika/blog-post/README.md rename to src/sbt-test/laika_0.13/blog-post/README.md diff --git a/src/sbt-test/laika/blog-post/build.sbt b/src/sbt-test/laika_0.13/blog-post/build.sbt similarity index 100% rename from src/sbt-test/laika/blog-post/build.sbt rename to src/sbt-test/laika_0.13/blog-post/build.sbt diff --git a/src/sbt-test/laika/blog-post/project/CustomDirectives.scala b/src/sbt-test/laika_0.13/blog-post/project/CustomDirectives.scala similarity index 100% rename from src/sbt-test/laika/blog-post/project/CustomDirectives.scala rename to src/sbt-test/laika_0.13/blog-post/project/CustomDirectives.scala diff --git a/src/sbt-test/laika_0.13/blog-post/project/build.properties b/src/sbt-test/laika_0.13/blog-post/project/build.properties new file mode 100644 index 0000000..c091b86 --- /dev/null +++ b/src/sbt-test/laika_0.13/blog-post/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.16 diff --git a/src/sbt-test/laika/blog-post/project/plugins.sbt b/src/sbt-test/laika_0.13/blog-post/project/plugins.sbt similarity index 100% rename from src/sbt-test/laika/blog-post/project/plugins.sbt rename to src/sbt-test/laika_0.13/blog-post/project/plugins.sbt diff --git a/src/sbt-test/laika/blog-post/src/blog/default.template.html b/src/sbt-test/laika_0.13/blog-post/src/blog/default.template.html similarity index 100% rename from src/sbt-test/laika/blog-post/src/blog/default.template.html rename to src/sbt-test/laika_0.13/blog-post/src/blog/default.template.html diff --git a/src/sbt-test/laika/blog-post/src/blog/index.md b/src/sbt-test/laika_0.13/blog-post/src/blog/index.md similarity index 100% rename from src/sbt-test/laika/blog-post/src/blog/index.md rename to src/sbt-test/laika_0.13/blog-post/src/blog/index.md diff --git a/src/sbt-test/laika/blog-post/src/blog/topics/directory.conf b/src/sbt-test/laika_0.13/blog-post/src/blog/topics/directory.conf similarity index 100% rename from src/sbt-test/laika/blog-post/src/blog/topics/directory.conf rename to src/sbt-test/laika_0.13/blog-post/src/blog/topics/directory.conf diff --git a/src/sbt-test/laika/blog-post/src/blog/topics/post-1.md b/src/sbt-test/laika_0.13/blog-post/src/blog/topics/post-1.md similarity index 100% rename from src/sbt-test/laika/blog-post/src/blog/topics/post-1.md rename to src/sbt-test/laika_0.13/blog-post/src/blog/topics/post-1.md diff --git a/src/sbt-test/laika/blog-post/src/blog/topics/post-2.md b/src/sbt-test/laika_0.13/blog-post/src/blog/topics/post-2.md similarity index 100% rename from src/sbt-test/laika/blog-post/src/blog/topics/post-2.md rename to src/sbt-test/laika_0.13/blog-post/src/blog/topics/post-2.md diff --git a/src/sbt-test/laika/blog-post/test b/src/sbt-test/laika_0.13/blog-post/test similarity index 100% rename from src/sbt-test/laika/blog-post/test rename to src/sbt-test/laika_0.13/blog-post/test diff --git a/src/sbt-test/laika/minimal/build.sbt b/src/sbt-test/laika_0.13/minimal/build.sbt similarity index 100% rename from src/sbt-test/laika/minimal/build.sbt rename to src/sbt-test/laika_0.13/minimal/build.sbt diff --git a/src/sbt-test/laika_0.13/minimal/project/build.properties b/src/sbt-test/laika_0.13/minimal/project/build.properties new file mode 100644 index 0000000..c091b86 --- /dev/null +++ b/src/sbt-test/laika_0.13/minimal/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.16 diff --git a/src/sbt-test/laika/minimal/project/plugins.sbt b/src/sbt-test/laika_0.13/minimal/project/plugins.sbt similarity index 100% rename from src/sbt-test/laika/minimal/project/plugins.sbt rename to src/sbt-test/laika_0.13/minimal/project/plugins.sbt diff --git a/src/sbt-test/laika/minimal/src/laikaSite/index.md b/src/sbt-test/laika_0.13/minimal/src/laikaSite/index.md similarity index 100% rename from src/sbt-test/laika/minimal/src/laikaSite/index.md rename to src/sbt-test/laika_0.13/minimal/src/laikaSite/index.md diff --git a/src/sbt-test/laika/minimal/test b/src/sbt-test/laika_0.13/minimal/test similarity index 100% rename from src/sbt-test/laika/minimal/test rename to src/sbt-test/laika_0.13/minimal/test diff --git a/src/sbt-test/laika_1.x/blog-post/README.md b/src/sbt-test/laika_1.x/blog-post/README.md new file mode 100644 index 0000000..08cfd48 --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/README.md @@ -0,0 +1 @@ +Based on [Blog Post](http://startbootstrap.com/template-overviews/blog-post/) and adopted for Laika just as sample diff --git a/src/sbt-test/laika_1.x/blog-post/build.sbt b/src/sbt-test/laika_1.x/blog-post/build.sbt new file mode 100644 index 0000000..afdadce --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/build.sbt @@ -0,0 +1,34 @@ +name := "test" + +//#enablePlugin +enablePlugins(LaikaSitePlugin) +//#enablePlugin + +sourceDirectory in LaikaSite := sourceDirectory.value / "blog" + +siteSubdirName in LaikaSite := "blog" + +//#laikaSbtPluginCustomization +import laika.sbt.LaikaPlugin.autoImport.{laikaBlockDirectives, Laika, laikaSiteRenderers} + +laikaBlockDirectives in Laika += CustomDirectives.postsToc +laikaSiteRenderers in Laika += CustomDirectives.postsRenderer +sourceDirectories in Laika := Seq((sourceDirectory in LaikaSite).value) +//#laikaSbtPluginCustomization + +TaskKey[Unit]("checkContent") := { + val dest = (target in makeSite).value / (siteSubdirName in LaikaSite).value + + val expectedFilesAndWords = Map( + dest / "index.html" -> Seq("Start Bootstrap Template", "Blog Post Title", "Second Post Title"), + dest / "topics" / "post-1.html" -> Seq("Blog Post Title", "recusandae laborum minus inventore?"), + dest / "topics" / "post-2.html" -> Seq("Second Post Title", "perspiciatis. Enim, iure!") + ) + + for ((file, words) <- expectedFilesAndWords) { + assert(file.exists, s"${file.getAbsolutePath} did not exist") + val content = IO.readLines(file) + for (word <- words) + assert(content.exists(_.contains(word)), s"Did not find $word content in:\n${content.mkString("\n")}") + } +} diff --git a/src/sbt-test/laika_1.x/blog-post/project/CustomDirectives.scala b/src/sbt-test/laika_1.x/blog-post/project/CustomDirectives.scala new file mode 100644 index 0000000..08cf839 --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/project/CustomDirectives.scala @@ -0,0 +1,55 @@ +import laika.directive.Directives.Blocks +import laika.directive.StandardDirectives +import laika.render.HTMLWriter +import laika.rewrite.{DocumentCursor, TreeCursor} +import laika.tree.Documents.{Document, DocumentTree} +import laika.tree.Elements +import laika.tree.Elements._ +import com.typesafe.config.Config + +// Just sample, probably not the best way to do custom toc for Laika +object CustomDirectives extends StandardDirectives { + + case class PostsTocElement(title: Seq[Span], by: String, path: PathInfo, options: Elements.Options) + extends Elements.Element with Elements.Block + + val postsToc: Blocks.Directive = Blocks.create("postsToc") { + import Blocks.Combinators._ + + def titleOrName (content: Document) = + if (content.title.nonEmpty) content.title + else Seq(Text(content.name)) + + def by(config: Config) = + if (config.hasPath("by")) + config.getString("by") + else "" + + cursor.map { cursor => + val posts = cursor.root.children.collect { + case pd: TreeCursor => + pd.children.collect { + case d: DocumentCursor => + val path = d.target.path + val refPath = cursor.parent.target.path + PostsTocElement(titleOrName(d.target), + by(d.config), + PathInfo.fromPath(path, refPath.parent), + Styles("toc")) + } + }.flatten + + BlockSequence(posts) + } + } + + val postsRenderer: HTMLWriter => RenderFunction = { out => { + case PostsTocElement(title, by, path, options) => + out << Paragraph(List( + CrossLink(title, "", path), + LineBreak(), + SpanSequence(Seq(Text("by "), Text(by))) + ), options) + } + } +} diff --git a/src/sbt-test/laika_1.x/blog-post/project/build.properties b/src/sbt-test/laika_1.x/blog-post/project/build.properties new file mode 100644 index 0000000..b7dd3cb --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.0.2 diff --git a/src/sbt-test/laika_1.x/blog-post/project/plugins.sbt b/src/sbt-test/laika_1.x/blog-post/project/plugins.sbt new file mode 100644 index 0000000..6246999 --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("com.typesafe.sbt" % "sbt-site" % sys.props("project.version")) \ No newline at end of file diff --git a/src/sbt-test/laika_1.x/blog-post/src/blog/default.template.html b/src/sbt-test/laika_1.x/blog-post/src/blog/default.template.html new file mode 100644 index 0000000..fe895dd --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/src/blog/default.template.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + {{document.title}} + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + {{document.content}} + +
+ + +
+ + +
+

Blog Search

+
+ + + + +
+ +
+ + +
+

Blog Categories

+ + +
+ +
+ +
+ + +
+ + +
+
+
+

Copyright © Your Website 2014

+
+
+ +
+ +
+ + + + + + + + + + + diff --git a/src/sbt-test/laika_1.x/blog-post/src/blog/index.md b/src/sbt-test/laika_1.x/blog-post/src/blog/index.md new file mode 100644 index 0000000..49bbf83 --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/src/blog/index.md @@ -0,0 +1,5 @@ +{% + title: "Blog Post - Start Bootstrap Template" +%} + +@:postsToc. \ No newline at end of file diff --git a/src/sbt-test/laika_1.x/blog-post/src/blog/topics/directory.conf b/src/sbt-test/laika_1.x/blog-post/src/blog/topics/directory.conf new file mode 100644 index 0000000..de88770 --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/src/blog/topics/directory.conf @@ -0,0 +1,4 @@ +navigationOrder = [ + post-1.md + post-2.md +] \ No newline at end of file diff --git a/src/sbt-test/laika_1.x/blog-post/src/blog/topics/post-1.md b/src/sbt-test/laika_1.x/blog-post/src/blog/topics/post-1.md new file mode 100644 index 0000000..59c76a6 --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/src/blog/topics/post-1.md @@ -0,0 +1,8 @@ +{% + title: "Blog Post Title" + by: "Start Bootstrap" +%} + +Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ducimus, vero, obcaecati, aut, error quam sapiente nemo saepe quibusdam sit excepturi nam quia corporis eligendi eos magni recusandae laborum minus inventore? + +Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. diff --git a/src/sbt-test/laika_1.x/blog-post/src/blog/topics/post-2.md b/src/sbt-test/laika_1.x/blog-post/src/blog/topics/post-2.md new file mode 100644 index 0000000..5eedcd6 --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/src/blog/topics/post-2.md @@ -0,0 +1,10 @@ +{% + title: "Second Post Title" + by: "Start Bootstrap & Lipsum" +%} + +Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eos, doloribus, dolorem iusto blanditiis unde eius illum consequuntur neque dicta incidunt ullam ea hic porro optio ratione repellat perspiciatis. Enim, iure! + +Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error, nostrum, aliquid, animi, ut quas placeat totam sunt tempora commodi nihil ullam alias modi dicta saepe minima ab quo voluptatem obcaecati? + +Lorem ipsum dolor sit amet, consectetur adipisicing elit. Harum, dolor quis. Sunt, ut, explicabo, aliquam tenetur ratione tempore quidem voluptates cupiditate voluptas illo saepe quaerat numquam recusandae? Qui, necessitatibus, est! diff --git a/src/sbt-test/laika_1.x/blog-post/test b/src/sbt-test/laika_1.x/blog-post/test new file mode 100644 index 0000000..9f9a269 --- /dev/null +++ b/src/sbt-test/laika_1.x/blog-post/test @@ -0,0 +1,2 @@ +> makeSite +> checkContent diff --git a/src/sbt-test/laika_1.x/minimal/build.sbt b/src/sbt-test/laika_1.x/minimal/build.sbt new file mode 100644 index 0000000..d80f793 --- /dev/null +++ b/src/sbt-test/laika_1.x/minimal/build.sbt @@ -0,0 +1,22 @@ +name := "test" + +//#enablePlugin +enablePlugins(LaikaSitePlugin) +//#enablePlugin + +siteSubdirName in LaikaSite := "minimal" + +TaskKey[Unit]("checkContent") := { + val dest = (target in makeSite).value / (siteSubdirName in LaikaSite).value + + val expectedFilesAndWords = Map( + dest / "index.html" -> Seq("test", "Minimal") + ) + + for ((file, words) <- expectedFilesAndWords) { + assert(file.exists, s"${file.getAbsolutePath} did not exist") + val content = IO.readLines(file) + for (word <- words) + assert(content.exists(_.contains(word)), s"Did not find $word content in:\n${content.mkString("\n")}") + } +} diff --git a/src/sbt-test/laika_1.x/minimal/project/build.properties b/src/sbt-test/laika_1.x/minimal/project/build.properties new file mode 100644 index 0000000..b7dd3cb --- /dev/null +++ b/src/sbt-test/laika_1.x/minimal/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.0.2 diff --git a/src/sbt-test/laika_1.x/minimal/project/plugins.sbt b/src/sbt-test/laika_1.x/minimal/project/plugins.sbt new file mode 100644 index 0000000..6246999 --- /dev/null +++ b/src/sbt-test/laika_1.x/minimal/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("com.typesafe.sbt" % "sbt-site" % sys.props("project.version")) \ No newline at end of file diff --git a/src/sbt-test/laika_1.x/minimal/src/laikaSite/index.md b/src/sbt-test/laika_1.x/minimal/src/laikaSite/index.md new file mode 100644 index 0000000..1c6b04b --- /dev/null +++ b/src/sbt-test/laika_1.x/minimal/src/laikaSite/index.md @@ -0,0 +1,3 @@ +# Test Minimal + +test diff --git a/src/sbt-test/laika_1.x/minimal/test b/src/sbt-test/laika_1.x/minimal/test new file mode 100644 index 0000000..9f9a269 --- /dev/null +++ b/src/sbt-test/laika_1.x/minimal/test @@ -0,0 +1,2 @@ +> makeSite +> checkContent From 1408ef592b15264a3af2ae2a3d6563962db30942 Mon Sep 17 00:00:00 2001 From: rhpvorderman Date: Thu, 11 Jan 2018 10:58:57 +0100 Subject: [PATCH 06/13] remove bla --- .../com/typesafe/sbt/site/laika/LaikaSitePlugin.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala index 0f3cdf1..3e447e7 100644 --- a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala +++ b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala @@ -17,7 +17,6 @@ object LaikaSitePlugin extends AutoPlugin { object autoImport { val LaikaSite = config("laikaSite") - val bla = config("mundoBla") } import autoImport._ From 06addff43ae10a17c7fc37b229423f089d1dff50 Mon Sep 17 00:00:00 2001 From: rhpvorderman Date: Thu, 11 Jan 2018 11:18:23 +0100 Subject: [PATCH 07/13] make sure plugin loads --- .../com/typesafe/sbt/site/laika/LaikaSitePlugin.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala index 3e447e7..ebe6d68 100644 --- a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala +++ b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala @@ -9,6 +9,7 @@ import com.typesafe.sbt.site.util.SiteHelpers import com.typesafe.sbt.site.SitePlugin.autoImport.siteSubdirName import com.typesafe.sbt.site.SitePlugin.autoImport.makeSite import laika.sbt.LaikaPlugin.autoImport.{Laika, laikaHTML, laikaSite } +import laika.sbt.LaikaPlugin import Path.relativeTo object LaikaSitePlugin extends AutoPlugin { @@ -24,6 +25,7 @@ object LaikaSitePlugin extends AutoPlugin { /** Creates settings necessary for running Laika in the given configuration. */ def laikaSettings(config: Configuration): Seq[Setting[_]] = + LaikaPlugin.projectSettings ++ inConfig(config)( Seq( includeFilter := AllPassFilter, @@ -42,7 +44,7 @@ object LaikaSitePlugin extends AutoPlugin { SiteHelpers.watchSettings(config) ++ SiteHelpers.addMappingsToSiteDir(mappings in config, siteSubdirName in config) ++ Seq( - makeSite := makeSite.dependsOn(laikaHTML).value + makeSite := makeSite.dependsOn(laikaHTML in Laika).value ) private def generate(target: File, inc: FileFilter, exc: FileFilter): Seq[(File, String)] = { From 712f9935d5a42ac2a76b083edd17f50e5762a94d Mon Sep 17 00:00:00 2001 From: rhpvorderman Date: Thu, 11 Jan 2018 14:25:42 +0100 Subject: [PATCH 08/13] render in target/laikaSite --- .../com/typesafe/sbt/site/laika/LaikaSitePlugin.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala index ebe6d68..8f83f3a 100644 --- a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala +++ b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala @@ -36,7 +36,8 @@ object LaikaSitePlugin extends AutoPlugin { excludeFilter.value ), siteSubdirName := "", - target in ( Laika, laikaSite) := (target in makeSite).value, + target in Laika := (target in makeSite).value, + target in laikaSite := (target in makeSite).value, sourceDirectories in Laika := Seq(sourceDirectory.value) ) ) ++ From d11c37ec743f200d801df99522e8af93b73f99e5 Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Sun, 4 Feb 2018 20:07:28 -0500 Subject: [PATCH 09/13] Rearrange Laika settings for sbt 1.0 Scope the Laika setting to laikaSite and remove override for makeSite to simply call laikaSite in order to derive the mappings. --- .../sbt/site/laika/LaikaSitePlugin.scala | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala index 8f83f3a..63403cd 100644 --- a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala +++ b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala @@ -25,28 +25,22 @@ object LaikaSitePlugin extends AutoPlugin { /** Creates settings necessary for running Laika in the given configuration. */ def laikaSettings(config: Configuration): Seq[Setting[_]] = - LaikaPlugin.projectSettings ++ inConfig(config)( - Seq( + Def.settings( + LaikaPlugin.projectSettings, + target in laikaSite := target.value, includeFilter := AllPassFilter, - excludeFilter := HiddenFileFilter, - mappings := generate( - target.value, - includeFilter.value, - excludeFilter.value - ), + mappings := { + val output = laikaSite.value + output ** includeFilter.value --- output pair Path.relativeTo(output) + }, siteSubdirName := "", - target in Laika := (target in makeSite).value, - target in laikaSite := (target in makeSite).value, sourceDirectories in Laika := Seq(sourceDirectory.value) ) ) ++ SiteHelpers.directorySettings(config) ++ SiteHelpers.watchSettings(config) ++ - SiteHelpers.addMappingsToSiteDir(mappings in config, siteSubdirName in config) ++ - Seq( - makeSite := makeSite.dependsOn(laikaHTML in Laika).value - ) + SiteHelpers.addMappingsToSiteDir(mappings in config, siteSubdirName in config) private def generate(target: File, inc: FileFilter, exc: FileFilter): Seq[(File, String)] = { // Figure out what was generated. From df459e8c685f71a7e9c15846040d31f1374a6f00 Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Sun, 4 Feb 2018 20:10:24 -0500 Subject: [PATCH 10/13] Update documentation related with Laika site support --- notes/1.3.2.markdown | 3 +++ src/main/paradox/generators/laika.md | 19 +++++-------------- src/main/paradox/index.md | 3 +-- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/notes/1.3.2.markdown b/notes/1.3.2.markdown index f3c111d..2fc22a3 100644 --- a/notes/1.3.2.markdown +++ b/notes/1.3.2.markdown @@ -6,9 +6,12 @@ See the [1.3.2 milestone] for the full list of related tickets and PRs. 1. Bump sbt to 0.13.17 and 1.0.4. [#123] ([@jonas]) 2. Bump Paradox to version [0.3.2][paradox-0.3.2]. ([@jonas]) +3. Port Laika site plugin to sbt 1.x. [#121] ([@rhpvorderman]) [1.3.2 milestone]: https://github.com/sbt/sbt-site/milestone/6 +[#121]: https://github.com/sbt/sbt-site/pull/121 [#123]: https://github.com/sbt/sbt-site/pull/123 [paradox-0.3.2]: https://github.com/lightbend/paradox/releases/tag/v0.3.2 [@jonas]: https://github.com/jonas +[@rhpvorderman]: http://github.com/rhpvorderman diff --git a/src/main/paradox/generators/laika.md b/src/main/paradox/generators/laika.md index 8626d96..dddab80 100644 --- a/src/main/paradox/generators/laika.md +++ b/src/main/paradox/generators/laika.md @@ -1,14 +1,9 @@ # Laika The sbt-site plugin has support for building [Laika] projects. - -@@@ note -Currently the Laika generator is only supported for sbt 0.13. -@@@ - To enable Laika site generation, simply enable the associated plugin in your `build.sbt` file: -@@ snip[enablePlugin](../../../sbt-test/laika/minimal/build.sbt) { #enablePlugin } +@@ snip[enablePlugin](../../../sbt-test/laika_0.13/minimal/build.sbt) { #enablePlugin } This plugin assumes you have a Laika project under the `src/laika` directory. To change this, set the `sourceDirectory` key in the `LaikaSite` scope: @@ -24,14 +19,10 @@ From other hand you can customize other aspects of Laika's behavior through basi [Laika sbt plugin](https://planet42.github.io/Laika/using-laika/sbt.html) keys and hooks. For example in order to add custom block directives you can include such code to your build.sbt: -```sbt -import LaikaKeys._ - -blockDirectives in Laika += CustomDirectives.postsToc -``` - -Full sample how use Laika sbt plugin together with sbt-site you can find here: +sbt 0.13 +: @@ snip[laikaSbtPluginCustomization](../../../sbt-test/laika_0.13/blog-post/build.sbt) { #laikaSbtPluginCustomization } -@@ snip[laikaSbtPluginCustomization](../../../sbt-test/laika/blog-post/build.sbt) { #laikaSbtPluginCustomization } +sbt 1.x +: @@ snip[laikaSbtPluginCustomization](../../../sbt-test/laika_1.x/blog-post/build.sbt) { #laikaSbtPluginCustomization } [Laika]: https://github.com/planet42/Laika diff --git a/src/main/paradox/index.md b/src/main/paradox/index.md index 79bcb32..22f2c57 100644 --- a/src/main/paradox/index.md +++ b/src/main/paradox/index.md @@ -6,8 +6,7 @@ Before upgrading please consult the @github:[release notes](/notes/). Instructio @@@ note -* Version 1.3.0 is cross published to both sbt 0.13 and sbt 1.x, however, the - [Laika](generators/laika.md) generator is currently only available for sbt 0.13. +* Version 1.3.0 is cross published to both sbt 0.13 and sbt 1.x. * As of sbt-site version 1.x.x, sbt version 0.13.10+ or 1.0.0-RC2+ is required. * For earlier 0.13.x releases, use [version 0.8.2][0.8.2]. * For sbt 0.12, use [version 0.7.2][0.7.2]. From 4e266ef53c3befdec99c19a6f4dff70e5f4a50cf Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Sun, 4 Feb 2018 20:15:38 -0500 Subject: [PATCH 11/13] Don't import auto imported stuff --- src/sbt-test/laika_1.x/blog-post/build.sbt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/sbt-test/laika_1.x/blog-post/build.sbt b/src/sbt-test/laika_1.x/blog-post/build.sbt index afdadce..58c7917 100644 --- a/src/sbt-test/laika_1.x/blog-post/build.sbt +++ b/src/sbt-test/laika_1.x/blog-post/build.sbt @@ -9,8 +9,6 @@ sourceDirectory in LaikaSite := sourceDirectory.value / "blog" siteSubdirName in LaikaSite := "blog" //#laikaSbtPluginCustomization -import laika.sbt.LaikaPlugin.autoImport.{laikaBlockDirectives, Laika, laikaSiteRenderers} - laikaBlockDirectives in Laika += CustomDirectives.postsToc laikaSiteRenderers in Laika += CustomDirectives.postsRenderer sourceDirectories in Laika := Seq((sourceDirectory in LaikaSite).value) From 214d46d149ce5e0e378861566ae337954fdfb9e5 Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Sun, 4 Feb 2018 20:46:23 -0500 Subject: [PATCH 12/13] Add dependency on the LaikaPlugin Ensures that the LaikaSite plugin automatically loads the LaikaPlugin when enabled. Also reenabled the excludeFilter. --- .../com/typesafe/sbt/site/laika/LaikaSitePlugin.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala index 63403cd..45ceb83 100644 --- a/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala +++ b/src/main/scala-sbt-1.0/com/typesafe/sbt/site/laika/LaikaSitePlugin.scala @@ -8,12 +8,12 @@ import com.typesafe.sbt.site.SitePlugin import com.typesafe.sbt.site.util.SiteHelpers import com.typesafe.sbt.site.SitePlugin.autoImport.siteSubdirName import com.typesafe.sbt.site.SitePlugin.autoImport.makeSite -import laika.sbt.LaikaPlugin.autoImport.{Laika, laikaHTML, laikaSite } +import laika.sbt.LaikaPlugin.autoImport.{ Laika, laikaHTML, laikaSite } import laika.sbt.LaikaPlugin import Path.relativeTo object LaikaSitePlugin extends AutoPlugin { - override def requires = SitePlugin + override def requires = SitePlugin && LaikaPlugin override def trigger = noTrigger object autoImport { @@ -30,9 +30,9 @@ object LaikaSitePlugin extends AutoPlugin { LaikaPlugin.projectSettings, target in laikaSite := target.value, includeFilter := AllPassFilter, + excludeFilter := HiddenFileFilter, mappings := { - val output = laikaSite.value - output ** includeFilter.value --- output pair Path.relativeTo(output) + generate(laikaSite.value, includeFilter.value, excludeFilter.value) }, siteSubdirName := "", sourceDirectories in Laika := Seq(sourceDirectory.value) From c910a8de682bd0d895088667eeea0bb49bf3ead7 Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Sun, 4 Feb 2018 20:47:27 -0500 Subject: [PATCH 13/13] Fix the blog post example by scoping directives to LaikaSite --- src/sbt-test/laika_1.x/blog-post/build.sbt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/sbt-test/laika_1.x/blog-post/build.sbt b/src/sbt-test/laika_1.x/blog-post/build.sbt index 58c7917..a32262e 100644 --- a/src/sbt-test/laika_1.x/blog-post/build.sbt +++ b/src/sbt-test/laika_1.x/blog-post/build.sbt @@ -9,9 +9,8 @@ sourceDirectory in LaikaSite := sourceDirectory.value / "blog" siteSubdirName in LaikaSite := "blog" //#laikaSbtPluginCustomization -laikaBlockDirectives in Laika += CustomDirectives.postsToc -laikaSiteRenderers in Laika += CustomDirectives.postsRenderer -sourceDirectories in Laika := Seq((sourceDirectory in LaikaSite).value) +laikaBlockDirectives in LaikaSite += CustomDirectives.postsToc +laikaSiteRenderers in LaikaSite += CustomDirectives.postsRenderer //#laikaSbtPluginCustomization TaskKey[Unit]("checkContent") := {