1- package io .github .quafadas . RefreshPlugin
1+ package io .github .quafadas
22
33import io .github .quafadas .sjsls .LiveServerConfig
44import mill .*
55import mill .scalalib .*
66import mill .scalajslib .*
7- import os . Path
7+
88import mill .api .Task .Simple
99import fs2 .concurrent .Topic
1010import cats .effect .IO
11- // import mill.scalajslib.*
12- // import coursier.maven.MavenRepository
13- // import mill.api.Result
14- // import mill.util.Jvm.createJar
15- // import mill.define.PathRef
16- // import mill.scalalib.api.CompilationResult
17- // // import de.tobiasroeser.mill.vcs.version.VcsVersion
18- // import scala.util.Try
19- // import mill.scalalib.publish.PomSettings
20- // import mill.scalalib.publish.License
21- // import mill.scalalib.publish.VersionControl
22- // import os.SubPath
23- // import ClasspathHelp.*
2411import cats .effect .unsafe .implicits .global
2512import io .github .quafadas .sjsls .LiveServerConfig
26- import cats .effect .ExitCode
27- import scala .util .{Try , Success , Failure }
28- import scala .concurrent .Future
2913import mill .api .BuildCtx
3014import mill .scalajslib .api .Report
3115implicit val ec : scala.concurrent.ExecutionContext = scala.concurrent.ExecutionContext .global
@@ -36,17 +20,17 @@ trait ScalaJsRefreshModule extends ScalaJSModule:
3620
3721
3822 def indexHtml = Task {
39- os.write.over(Task .dest / " index.html" , io.github.quafadas.sjsls.vanillaTemplate)
23+ os.write.over(Task .dest / " index.html" , io.github.quafadas.sjsls.vanillaTemplate(withStyles()) )
4024 PathRef (Task .dest / " index.html" )
4125 }
4226
43- def assetsDir = Task {
44- " assets"
45- }
27+ def assetsDir =
28+ super .moduleDir / " assets"
4629
47- def assets = Task {
48- os.write.over(Task .dest / " style.css" , io.github.quafadas.sjsls.lessStyle(true ).render)
49- PathRef (Task .dest / assetsDir())
30+ def withStyles = Task { true }
31+
32+ def assets = Task .Source {
33+ assetsDir
5034 }
5135
5236 def port = Task {
@@ -66,33 +50,35 @@ trait ScalaJsRefreshModule extends ScalaJSModule:
6650 }
6751
6852 def siteGen = Task {
69- val assets_ = assets()
70- val path = fastLinkJS().dest
71- os.copy.over(Task .dest / " index.html" , indexHtml().path)
72- os.copy.over(Task .dest / assetsDir(), assets_.path)
73- updateServer.publish1(println(" publishing update" ))
74- (assets_.path.toString(), path.path.toString())
53+ val assets_ = assets()
54+ val path = fastLinkJS().dest.path
55+ os.copy.over(indexHtml().path, Task .dest / " index.html" )
56+ os.copy(assets_.path, Task .dest, mergeFolders = true )
57+ updateServer.publish1(println(" publish update" )).unsafeRunSync()
58+ (Task .dest.toString(), assets_.path.toString(), path.toString())
59+
7560 }
7661
7762 def lcs = Task .Worker {
78- val (assets, js) = siteGen()
63+ val (site, assets, js) = siteGen()
64+ println(" Gen lsc" )
7965 LiveServerConfig (
8066 baseDir = None ,
8167 outDir = Some (js),
8268 port = com.comcast.ip4s.Port .fromInt(port()).getOrElse(throw new IllegalArgumentException (s " invalid port: ${port()}" )),
83- indexHtmlTemplate = Some (assets ),
69+ indexHtmlTemplate = Some (site ),
8470 buildTool = io.github.quafadas.sjsls.NoBuildTool (), // Here we are a slave to the build tool
8571 openBrowserAt = " /index.html" ,
8672 preventBrowserOpen = ! openBrowser(),
8773 dezombify = dezombify(),
88- logLevel = logLevel()
74+ logLevel = logLevel(),
75+ customRefresh = Some (updateServer)
8976 )
9077 }
9178
9279 def serve = Task .Worker {
93- // Let's kill off anything that is a zombie on the port we want to use
94- val p = port()
9580
81+ println(lcs())
9682 BuildCtx .withFilesystemCheckerDisabled {
9783 new RefreshServer (lcs())
9884 }
0 commit comments