Scala code/resource Generator Plugin for xsbt
Scala Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
project
src
test
.gitignore
.travis.yml
LICENSE.txt
build.sbt
readme.md
travis.sh

readme.md

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