Giter VIP home page Giter VIP logo

xsbt-scalag-plugin's Introduction

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

xsbt-scalag-plugin's People

Contributors

seratch avatar xuwei-k avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.