© “Andreas Hartmann”http://www.devkat.net
Thanks to Brian McKenna for providing the Roy language. Parts of his Roy plugin for Play (Ray) have been used for this plugin.
Some code has been used from the Untyped SBT Plugins.
Add the following line to your project/build.sbt
file:
addSbtPlugin("net.devkat" %% "roy-sbt-plugin" % "0.1")
After you start your web project, changes in Roy sources will be automatically detected and the sources recompiled:
sbt
> ~;container:start; container:reload /
At the moment the whole project is compiled when a Roy source file changes. Any hints how to compile only the affected Roy files are greatly appreciated.
The plugin offers the following keys:
object RoyKeys {
val roy = TaskKey[Seq[File]]("roy", "Compile Roy sources")
val royIncludeFilter = SettingKey[FileFilter]("roy-include-filter", "Include filter")
val royExcludeFilter = SettingKey[Seq[FileFilter]]("roy-exclude-filter", "Exclude filter")
val royCompilerOptions = SettingKey[Seq[String]]("roy-compiler-options", "Options for the Roy compiler")
}
The following example shows how to configure an exclude filter in project/Build.scala
. The plugin provides a PathFilter
class for wildcard path patterns.
import net.devkat.sbtroy.RoyPlugin._
import net.devkat.sbtroy.RoyPlugin.RoyKeys._
import net.devkat.sbtroy.RoyPlugin.PathFilter
lazy val web: Project = Project("my-web-project", file("web"),
settings = BuildSettings.buildSettings ++ (
roySettings ++ Seq(
royExcludeFilter in Compile += new PathFilter("**/my/excluded/path/**")
)
)
)
The following configuration for the xsbt-web-plugin works e.g. for the Lift web application framework:
import com.github.siasia.PluginKeys._
settings = BuildSettings.buildSettings ++ (
…
++ webSettings ++ Seq(
(webappResources in Compile) <+= (resourceManaged in Compile) apply {
r => file(r.getAbsolutePath() + "/webapp")
}
)
…
)
The Roy SBT plugin is licensed unter the Apache License, Version 2.0.