init: simple cask, initial template

This commit is contained in:
efim 2023-09-22 17:01:43 +00:00
parent fe8b54346a
commit 7a8dba19ee
9 changed files with 115 additions and 0 deletions

View File

View File

@ -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"

View File

@ -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 = "";
};
}

View File

@ -0,0 +1 @@
sbt.version=1.9.0

View File

@ -0,0 +1 @@
addSbtPlugin("io.spray" % "sbt-revolver" % "0.10.0")

View File

@ -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>

View File

@ -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()
}

View File

@ -0,0 +1,8 @@
package example
class ExampleSuite extends munit.FunSuite:
test("addition") {
assert(1 + 1 == 2)
}
end ExampleSuite

View File

@ -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
} }