seratch / xsbt-scalag-plugin   0.2.2

GitHub

Scala code/resource Generator Plugin for xsbt

Scala versions: 2.10
sbt plugins: 0.13

xsbt-scalag-plugin

Scala code/resource Generator Plugin for xsbt.

Build Status

Setup

project/plugins.sbt

addSbtPlugin("com.github.seratch" % "xsbt-scalag-plugin" % "[0.2,)")

project/MyScalagDef.scala

import sbt._
import sbt.Keys._
import scalag._

object MyScalagDef extends Plugin {

  ScalagPlugin.addCommands(builtin.all:_*)

}

build.sbt

seq(scalagSettings: _*)

How to use?

g/generate command

Now g/generate command is available on xsbt.

$ sbt
> g
Usage: g [task-name] [args...] 

  project             Set up a new project
  class               Generates a new class file
  object              Generates a new object file
  specs2              Generates a new spec2 file for the specified class
  ScalaTest           Generates a new ScalaTest file for the specified class

>

When you execute "specs2" command,

sbt "g specs2 controllers.UserController"

following file will be created.

src/test/scala/controllers/UserControllerSpec.scala

package controllers

import org.specs2.mutable._

class UserControllerSpec extends Specification {

  "UserController" should {
    "be available" in {
      todo
    }
  }

}

How to extend?

Create your own generator

Main usage of scalag is creating your own generators. Edit scalag.scala as follows.

object MyScalagDef extends Plugin {

  ScalagPlugin.addCommands(builtin.all:_*)

  // Add your own command
  ScalagPlugin.addCommand(
    namespace = "play-scaffold",
    args = Seq("class-name", "field-name:field-type ..."),
    description = "Generates a scaffold for Play Framework 2.x Scala",
    operation = { case ScalagInput(className :: fields, settings) =>
      // TODO Anyone?
    }
  )

}

See also:

https://github.com/seratch/xsbt-scalag-plugin/blob/master/src/main/scala/scalag/builtin.scala

https://github.com/seratch/xsbt-scalag-plugin/wiki/Scalag-Commands

License

Apache License, Version 2.0

http://www.apache.org/licenses/LICENSE-2.0.html