8000 GitHub - sake92/mill-hepek: Mill plugin for rendering Scala objects to files
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

sake92/mill-hepek

Repository files navigation

mill-hepek

Maven Central

Mill plugin for writing Scala objects to files.
See also hepek, static content generator that builds upon this plugin.

Installation

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 = ...
}

Then you can run ./mill site.hepek

Usage

When you run ./mill site.hepek it will:

  1. write all object .. extends Renderable from the files package to site/hepek_output folder
  2. copy all files from src/resources/public to hepek_output folder
  3. write static accessors for src/resources/public files, so you don't have to type them with strings and make silly 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.


Examples


Fun fact

I think that this is the first project that tried this approach, using first-class Scala objects for this kind of stuff.
Correct me if I'm wrong... ^_^


About the name

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.

About

Mill plugin for rendering Scala objects to files

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0