init: added mainargs for port and host
This commit is contained in:
parent
d74df846f2
commit
6d5077159b
|
@ -4,9 +4,11 @@ val toolkit = "org.scala-lang" %% "toolkit" % toolkitV
|
||||||
val toolkitTest = "org.scala-lang" %% "toolkit-test" % toolkitV
|
val toolkitTest = "org.scala-lang" %% "toolkit-test" % toolkitV
|
||||||
|
|
||||||
val cask = "com.lihaoyi" %% "cask" % "0.9.1"
|
val cask = "com.lihaoyi" %% "cask" % "0.9.1"
|
||||||
|
val mainargs = "com.lihaoyi" %% "mainargs" % "0.5.4"
|
||||||
|
|
||||||
ThisBuild / scalaVersion := "3.2.2"
|
ThisBuild / scalaVersion := "3.2.2"
|
||||||
libraryDependencies += cask
|
libraryDependencies += cask
|
||||||
|
libraryDependencies += mainargs
|
||||||
libraryDependencies += toolkit
|
libraryDependencies += toolkit
|
||||||
libraryDependencies += (toolkitTest % Test)
|
libraryDependencies += (toolkitTest % Test)
|
||||||
|
|
||||||
|
|
|
@ -4,40 +4,27 @@ import org.thymeleaf.templatemode.TemplateMode
|
||||||
import org.thymeleaf.TemplateEngine
|
import org.thymeleaf.TemplateEngine
|
||||||
import org.thymeleaf.context.Context
|
import org.thymeleaf.context.Context
|
||||||
import cask.model.Response
|
import cask.model.Response
|
||||||
object MinimalApplication extends cask.MainRoutes{
|
import mainargs.{main, arg, ParserForMethods, Flag}
|
||||||
@cask.get("/")
|
|
||||||
def hello() = {
|
object MinimalApplication extends cask.Routes{
|
||||||
val context = new Context()
|
|
||||||
val yo = engine.process("lala", context)
|
@main
|
||||||
Response(
|
def run(
|
||||||
yo,
|
@arg(name="port", short='p', doc="Port on which server will start service")
|
||||||
headers = Seq("Content-Type" -> "text/html; charset=utf-8")
|
portArg: Int = 8080,
|
||||||
)
|
@arg(name="host", doc="Host on which server will start serving")
|
||||||
|
hostArg: String = "localhost"
|
||||||
|
) = {
|
||||||
|
println(s"Will start server on ${hostArg}:${portArg}")
|
||||||
|
val server = new cask.Main {
|
||||||
|
override def allRoutes: Seq[cask.main.Routes] = Seq(Routes())
|
||||||
|
override def port: Int = portArg
|
||||||
|
override def host: String = hostArg
|
||||||
|
}
|
||||||
|
server.main(Array.empty)
|
||||||
}
|
}
|
||||||
|
|
||||||
@cask.post("/do-thing")
|
def main(args: Array[String]): Unit = ParserForMethods(this).runOrExit(args)
|
||||||
def doThing(request: cask.Request) = {
|
|
||||||
request.text().reverse
|
|
||||||
}
|
|
||||||
|
|
||||||
@cask.staticResources("public")
|
|
||||||
def giveStaticResources() = "public"
|
|
||||||
|
|
||||||
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,47 @@
|
||||||
|
package example
|
||||||
|
|
||||||
|
import cask.model.Response
|
||||||
|
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver
|
||||||
|
import org.thymeleaf.TemplateEngine
|
||||||
|
import org.thymeleaf.context.Context
|
||||||
|
import org.thymeleaf.templatemode.TemplateMode
|
||||||
|
|
||||||
|
|
||||||
|
case class Routes()(implicit cc: castor.Context, log: cask.Logger)
|
||||||
|
extends cask.Routes {
|
||||||
|
|
||||||
|
def buildTemplateEngine(): TemplateEngine = {
|
||||||
|
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()
|
||||||
|
|
||||||
|
@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
|
||||||
|
}
|
||||||
|
|
||||||
|
@cask.staticResources("public")
|
||||||
|
def giveStaticResources() = "public"
|
||||||
|
|
||||||
|
initialize()
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue