An Mill plugin for writing Scala object
s to files.
See also hepek, static content generator that builds upon this plugin.
Add the following to your build.sc
:
import $ivy.`ba.sake::mill-hepek::0.0.2`
import mill._
import mill.scalalib._
import ba.sake.millhepek.MillHepekModule
object site extends MillHepekModule with ScalaModule {
def scalaVersion = ...
}
The main task of mill-hepek is hepek
.
When executed, it will:
- copy all files from
src/resources/public
tohepek_output
folder - write all
object .. extends Renderable
from thefiles
package tohepek_output
folder - write accessors for
src/resources/public
files, so you don't have to type it, or make mistakes
Minimal example:
package files // mandatory !!
import java.nio.file.Paths
import ba.sake.hepek.core.Renderable
object RenderMe extends Renderable {
// access `src/resources/public` files through autogenerated files.<TAB>
override def render =
"Some text" // arbitrary Scala code
override def relPath =
Paths.get("renderme.txt")
}
When you run ./mill site.hepek
, you'll find the site/hepek_output/renderme.txt
file,
with text Some text
.
I think that this is the first project that tried this approach, namely, using first-class Scala object
s for this kind of stuff.
Correct me if I'm wrong... ^_^
A "hepek" in Bosnian language is a jargon for a thing/thingy/stuff...
It is used when we don't know the name of a thing: "Give me that ... hepek".
Also, it is used in the famous show called "Top lista nadrealista" as a name for an advanced device which calms down situations of various kinds.