init: simple cask, initial template
This commit is contained in:
parent
fe8b54346a
commit
7a8dba19ee
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
val toolkitV = "0.1.7"
|
||||||
|
val toolkit = "org.scala-lang" %% "toolkit" % toolkitV
|
||||||
|
val toolkitTest = "org.scala-lang" %% "toolkit-test" % toolkitV
|
||||||
|
|
||||||
|
val cask = "com.lihaoyi" %% "cask" % "0.9.1"
|
||||||
|
|
||||||
|
ThisBuild / scalaVersion := "3.2.2"
|
||||||
|
libraryDependencies += cask
|
||||||
|
libraryDependencies += toolkit
|
||||||
|
libraryDependencies += (toolkitTest % Test)
|
||||||
|
|
||||||
|
// https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf
|
||||||
|
libraryDependencies += "org.thymeleaf" % "thymeleaf" % "3.1.2.RELEASE"
|
|
@ -0,0 +1,22 @@
|
||||||
|
{ pkgs, lib, sbt-derivation }:
|
||||||
|
let
|
||||||
|
pname = "countries-page";
|
||||||
|
in {
|
||||||
|
package = sbt-derivation.lib.mkSbtDerivation {
|
||||||
|
inherit pkgs pname;
|
||||||
|
# ...and the rest of the arguments
|
||||||
|
version = "0.0.1";
|
||||||
|
src = pkgs.nix-gitignore.gitignoreSource [ ] ./.;
|
||||||
|
nativeBuildInputs = [ pkgs.nodePackages.tailwindcss ];
|
||||||
|
buildPhase = ''
|
||||||
|
tailwindcss -i ./src/input.css -o ./src/main/resources/public/output.css
|
||||||
|
sbt assembly
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp target/scala-*/${pname}-assembly-*.jar $out/bin/${pname}.jar
|
||||||
|
'';
|
||||||
|
|
||||||
|
depsSha256 = "";
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
sbt.version=1.9.0
|
|
@ -0,0 +1 @@
|
||||||
|
addSbtPlugin("io.spray" % "sbt-revolver" % "0.10.0")
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html class="no-js" lang="">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Untitled</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||||
|
<!-- Place favicon.ico in the root directory -->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!--[if lt IE 8]>
|
||||||
|
<p class="browserupgrade">
|
||||||
|
You are using an <strong>outdated</strong> browser. Please
|
||||||
|
<a href="http://browsehappy.com/">upgrade your browser</a> to improve
|
||||||
|
your experience.
|
||||||
|
</p>
|
||||||
|
<![endif]-->
|
||||||
|
<h1>Hello!</h1>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,40 @@
|
||||||
|
package example
|
||||||
|
|
||||||
|
import org.thymeleaf.templatemode.TemplateMode
|
||||||
|
import org.thymeleaf.TemplateEngine
|
||||||
|
import org.thymeleaf.context.Context
|
||||||
|
import cask.model.Response
|
||||||
|
object MinimalApplication extends cask.MainRoutes{
|
||||||
|
@cask.get("/")
|
||||||
|
def hello() = {
|
||||||
|
val context = new Context()
|
||||||
|
val yo = engine.process("lala", context)
|
||||||
|
Response(
|
||||||
|
yo,
|
||||||
|
headers = Seq("Content-Type" -> "text/html; charset=utf-8")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@cask.post("/do-thing")
|
||||||
|
def doThing(request: cask.Request) = {
|
||||||
|
request.text().reverse
|
||||||
|
}
|
||||||
|
|
||||||
|
initialize()
|
||||||
|
|
||||||
|
def buildTemplateEngine(): TemplateEngine = {
|
||||||
|
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver
|
||||||
|
val templateResolver = new ClassLoaderTemplateResolver()
|
||||||
|
templateResolver.setTemplateMode(TemplateMode.HTML)
|
||||||
|
templateResolver.setPrefix("/templates/")
|
||||||
|
templateResolver.setSuffix(".html")
|
||||||
|
templateResolver.setCacheTTLMs(3600000L);
|
||||||
|
|
||||||
|
val templateEngine = new TemplateEngine()
|
||||||
|
templateEngine.setTemplateResolver(templateResolver)
|
||||||
|
|
||||||
|
templateEngine
|
||||||
|
}
|
||||||
|
|
||||||
|
val engine: TemplateEngine = buildTemplateEngine()
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package example
|
||||||
|
|
||||||
|
class ExampleSuite extends munit.FunSuite:
|
||||||
|
|
||||||
|
test("addition") {
|
||||||
|
assert(1 + 1 == 2)
|
||||||
|
}
|
||||||
|
end ExampleSuite
|
|
@ -32,6 +32,10 @@
|
||||||
inherit pkgs sbt-derivation;
|
inherit pkgs sbt-derivation;
|
||||||
lib = pkgs.lib;
|
lib = pkgs.lib;
|
||||||
};
|
};
|
||||||
|
flags-page = import ./16-countries-page-from-api {
|
||||||
|
inherit pkgs sbt-derivation;
|
||||||
|
lib = pkgs.lib;
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
devShells.default = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -58,6 +62,7 @@
|
||||||
packages.multi-step-form = multi-step-form.package;
|
packages.multi-step-form = multi-step-form.package;
|
||||||
packages.multi-step-form-image = multi-step-form.image;
|
packages.multi-step-form-image = multi-step-form.image;
|
||||||
nixosModules.multi-step-form = multi-step-form.module;
|
nixosModules.multi-step-form = multi-step-form.module;
|
||||||
|
packages.flag-page = flags-page.package;
|
||||||
});
|
});
|
||||||
# see https://serokell.io/blog/practical-nix-flakes
|
# see https://serokell.io/blog/practical-nix-flakes
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue