Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

merge chamges from master

  • Loading branch information...
commit d379f1901d7d4cb380ac2df2e591b2055af3a81f 2 parents 7d51c21 + 1e7a70d
jtournay authored
View
4 README.markdown
@@ -185,7 +185,7 @@ A `name` field with a value of `My Project` could be rendered in several ways:
$name$ -> "My Project"
$name;format="camel"$ -> "myProject"
$name;format="Camel"$ -> "MyProject"
- $name;format="normalized"$ -> "my-project"
+ $name;format="normalize"$ -> "my-project"
$name;format="lower,hyphen"$ -> "my-project"
Note that multiple format options can be specified (comma-separated) which will
@@ -216,7 +216,7 @@ object PluginDef extends Build {
And settings must be applied in a `build.sbt` file in the project base:
- seq(giter8Settings :_*)
+ seq(giter8Settings :_*)
When you enter sbt's interactive mode in the base directory of a
template project that is configured to use this plugin, the action
View
30 app/src/main/ls/0.4.5.json
@@ -0,0 +1,30 @@
+
+{
+ "organization":"net.databinder.giter8",
+ "name":"giter8",
+ "version":"0.4.5",
+ "description":"Command line tool to apply templates defined on github",
+ "site":"https://github.com/n8han/giter8",
+ "tags":[],
+ "docs":"",
+ "licenses": [{
+ "name": "LGPL v3",
+ "url": "http://www.gnu.org/licenses/lgpl.txt"
+ }],
+ "resolvers": ["https://oss.sonatype.org/content/repositories/releases"],
+ "dependencies": [{
+ "organization":"org.clapper",
+ "name": "scalasti",
+ "version": "0.5.5"
+ },{
+ "organization":"org.scala-sbt",
+ "name": "launcher-interface_2.9.1",
+ "version": "0.11.3"
+ },{
+ "organization":"net.databinder",
+ "name": "dispatch-lift-json",
+ "version": "0.8.5"
+ }],
+ "scalas": ["2.9.1"],
+ "sbt": false
+}
View
24 app/src/main/scala/apply.scala
@@ -2,28 +2,29 @@ package giter8
trait Apply { self: Giter8 =>
import java.io.File
+ import scalax.file.Path
+ import scalax.file.ImplicitConversions.defaultPath2jfile
import org.eclipse.jgit.api._
import scala.util.control.Exception.{allCatch,catching}
-
- val TMP = new File(System.getProperty("java.io.tmpdir"), java.util.UUID.randomUUID().toString)
+
+ val tempdir = Path.createTempDirectory(deleteOnExit = true)
+
def inspect(repo: String,
- branch: Option[String],
- arguments: Seq[String]) = {
+ branch: Option[String],
+ arguments: Seq[String]): Either[String, String] = {
val tmpl = clone(repo, branch)
- tmpl.right.map(G8Helpers.applyTemplate(_, new File("."), arguments))
+ tmpl.right.flatMap(G8Helpers.applyTemplate(_, new File("."), arguments))
}
- // TODO: exeptions handling
def clone(repo: String, branch: Option[String]) = {
import org.eclipse.jgit.api.ListBranchCommand.ListMode
import org.eclipse.jgit.lib._
-
import scala.collection.JavaConverters._
val cmd = Git.cloneRepository()
.setURI(repo)
- .setDirectory(TMP)
+ .setDirectory(tempdir)
val branchName = branch.map("refs/heads/" + _)
for(b <- branchName)
@@ -31,14 +32,11 @@ trait Apply { self: Giter8 =>
val g = cmd.call()
- TMP.deleteOnExit()
-
branchName.map { b =>
if(g.branchList().call().asScala.map(_.getName).contains(b))
- Right(TMP)
+ Right(tempdir)
else
Left("Branch not found: " + b)
- } getOrElse(Right(TMP))
+ } getOrElse(Right(tempdir))
}
}
-
View
43 app/src/main/scala/giter8.scala
@@ -14,39 +14,45 @@ class Giter8 extends xsbti.AppMain with Apply {
/** Runner shared my main-class runner */
def run(args: Array[String]): Int = {
(args.partition { s => Param.pattern.matcher(s).matches } match {
- case (params, Array(Local(repo))) =>
+ case (params, Array(Local(repo))) =>
inspect(repo, None, params)
- case (params, Array(Local(repo), Branch(_), branch)) =>
+ case (params, Array(Local(repo), Branch(_), branch)) =>
inspect(repo, Some(branch), params)
- case (params, Array(Git(remote))) =>
+ case (params, Array(Git(remote))) =>
inspect(remote, None, params)
case (params, Array(Git(remote), Branch(_), branch)) =>
inspect(remote, Some(branch), params)
case (params, Array(Repo(user, proj))) =>
- inspect("git@github.com:%s/%s.g8.git".format(user, proj), None, params)
+ ghInspect(user, proj, None, params)
case (params, Array(Repo(user, proj), Branch(_), branch)) =>
- inspect("git@github.com:%s/%s.g8.git".format(user, proj), Some(branch), params)
+ ghInspect(user, proj, Some(branch), params)
case _ => Left(usage)
- }) fold ({ error =>
+ }) fold ({ (error: String) =>
System.err.println("\n%s\n" format error)
1
- }, { message =>
- println("\n%s\n" format message)
+ }, { (message: String) =>
+ println("\n%s\n" format message )
0
})
}
- def http = new Http {
- override def make_logger = new dispatch.Logger {
- val jdklog = java.util.logging.Logger.getLogger("dispatch")
- def info(msg: String, items: Any*) {
- jdklog.info(msg.format(items: _*))
- }
- def warn(msg: String, items: Any*) {
- jdklog.warning(msg.format(items: _*))
- }
+ def ghInspect(user: String,
+ proj: String,
+ branch: Option[String],
+ params: Seq[String]) = {
+ try {
+ inspect("git://github.com/%s/%s.g8.git".format(user, proj),
+ branch,
+ params)
+ } catch {
+ case _: org.eclipse.jgit.api.errors.JGitInternalException =>
+ tempdir.deleteRecursively()
+ inspect("git@github.com:%s/%s.g8.git".format(user, proj),
+ branch,
+ params)
}
}
+
def usage = """giter8 %s
|Usage: g8 [TEMPLATE] [OPTION]...
|Apply specified template.
@@ -67,6 +73,9 @@ class Giter8 extends xsbti.AppMain with Apply {
|Apply template from a remote branch
| g8 n8han/giter8 -b some-branch
|
+ |Apply template from a local repo
+ | g8 file://path/to/the/repo
+ |
|Apply given name parameter and use defaults for all others.
| g8 n8han/giter8 --name=template-test
|
View
26 library/src/main/ls/0.4.5.json
@@ -0,0 +1,26 @@
+
+{
+ "organization":"net.databinder.giter8",
+ "name":"giter8-lib",
+ "version":"0.4.5",
+ "description":"shared library for app and plugin",
+ "site":"https://github.com/n8han/giter8",
+ "tags":[],
+ "docs":"",
+ "licenses": [{
+ "name": "LGPL v3",
+ "url": "http://www.gnu.org/licenses/lgpl.txt"
+ }],
+ "resolvers": ["https://oss.sonatype.org/content/repositories/releases"],
+ "dependencies": [{
+ "organization":"org.clapper",
+ "name": "scalasti",
+ "version": "0.5.5"
+ },{
+ "organization":"me.lessis",
+ "name": "ls",
+ "version": "0.1.2-RC2"
+ }],
+ "scalas": ["2.9.1"],
+ "sbt": false
+}
View
22 library/src/main/scala/g8.scala
@@ -93,7 +93,7 @@ object G8Helpers {
private def applyT(fetch: File => (Map[String, String], Stream[File], File, Option[File]))(tmpl: File, outputFolder: File, arguments: Seq[String] = Nil) = {
val (defaults, templates, templatesRoot, scaffoldsRoot) = fetch(tmpl)
-
+
val parameters = arguments.headOption.map { _ =>
(defaults /: arguments) {
case (map, Param(key, value)) if map.contains(key) =>
@@ -116,6 +116,7 @@ object G8Helpers {
private def fetchProjectTemplateinfo = fetchInfo(_: File, Some("src/main/g8"), Some("src/main/scaffolds"))
private def fetchRawTemplateinfo = fetchInfo(_: File, None, None)
+
def applyTemplate = applyT(fetchProjectTemplateinfo) _
def applyRaw = applyT(fetchRawTemplateinfo) _
@@ -132,10 +133,11 @@ object G8Helpers {
val templatesRoot = tmplFolder.map(new File(f, _)).getOrElse(f)
val fs = getVisibleFiles(templatesRoot)
+ val propertiesLoc = new File(templatesRoot, "default.properties")
val scaffoldsRoot = scaffoldFolder.map(new File(f, _))
val (propertiesFiles, tmpls) = fs.partition {
- _.getName == "default.properties"
+ _ == propertiesLoc
}
val parameters = propertiesFiles.headOption.map{ f =>
@@ -144,6 +146,7 @@ object G8Helpers {
}.getOrElse(Map.empty)
val g8templates = tmpls.filter(!_.isDirectory)
+
(parameters, g8templates, templatesRoot, scaffoldsRoot)
}
@@ -170,12 +173,17 @@ object G8Helpers {
}
val reader = new jline.ConsoleReader
+ val fixed = Set("verbatim")
others map { case (k,v) =>
- val in = sbt.SimpleReader.readLine("%s [%s]: ".format(k,v)).map{ r =>
- val x = r.trim
- if(x.isEmpty) v else x
+ if (fixed.contains(k))
+ (k, v)
+ else {
+ val in = sbt.SimpleReader.readLine("%s [%s]: ".format(k,v)).map{ r =>
+ val x = r.trim
+ if(x.isEmpty) v else x
+ }
+ (k, in.getOrElse(v))
}
- (k, in.getOrElse(v))
}
}
@@ -213,7 +221,7 @@ object G8Helpers {
Right("Template applied in %s" format (base.toString))
}
-
+
def copyScaffolds(sf: File, output: File) {
val scaffolds = if(sf.exists) Some(getVisibleFiles(sf)) else None
View
27 plugin/src/main/ls/0.3.2.json
@@ -0,0 +1,27 @@
+
+{
+ "organization":"net.databinder",
+ "name":"giter8-plugin",
+ "version":"0.3.2",
+ "description":"sbt 0.11 plugin for testing giter8 templates",
+ "site":"",
+ "tags":[],
+ "docs":"",
+ "licenses": [],
+ "resolvers": ["http://scala-tools.org/repo-releases"],
+ "dependencies": [{
+ "organization":"org.clapper",
+ "name": "scalasti",
+ "version": "0.5.5"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "sbt_2.9.1",
+ "version": "0.11.2"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "scripted-plugin",
+ "version": "0.11.2"
+ }],
+ "scalas": ["2.9.1"],
+ "sbt": true
+}
View
30 plugin/src/main/ls/0.4.0.json
@@ -0,0 +1,30 @@
+
+{
+ "organization":"net.databinder.giter8",
+ "name":"giter8-plugin",
+ "version":"0.4.0",
+ "description":"sbt 0.11 plugin for testing giter8 templates",
+ "site":"https://github.com/n8han/giter8",
+ "tags":[],
+ "docs":"",
+ "licenses": [{
+ "name": "LGPL v3",
+ "url": "http://www.gnu.org/licenses/lgpl.txt"
+ }],
+ "resolvers": ["http://scala-tools.org/repo-releases"],
+ "dependencies": [{
+ "organization":"org.clapper",
+ "name": "scalasti",
+ "version": "0.5.5"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "sbt_2.9.1",
+ "version": "0.11.2"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "scripted-plugin",
+ "version": "0.11.2"
+ }],
+ "scalas": ["2.9.1"],
+ "sbt": true
+}
View
30 plugin/src/main/ls/0.4.1.json
@@ -0,0 +1,30 @@
+
+{
+ "organization":"net.databinder.giter8",
+ "name":"giter8-plugin",
+ "version":"0.4.1",
+ "description":"sbt 0.11 plugin for testing giter8 templates",
+ "site":"https://github.com/n8han/giter8",
+ "tags":[],
+ "docs":"",
+ "licenses": [{
+ "name": "LGPL v3",
+ "url": "http://www.gnu.org/licenses/lgpl.txt"
+ }],
+ "resolvers": ["http://scala-tools.org/repo-releases"],
+ "dependencies": [{
+ "organization":"org.clapper",
+ "name": "scalasti",
+ "version": "0.5.5"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "sbt_2.9.1",
+ "version": "0.11.2"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "scripted-plugin",
+ "version": "0.11.2"
+ }],
+ "scalas": ["2.9.1"],
+ "sbt": true
+}
View
30 plugin/src/main/ls/0.4.2.json
@@ -0,0 +1,30 @@
+
+{
+ "organization":"net.databinder.giter8",
+ "name":"giter8-plugin",
+ "version":"0.4.2",
+ "description":"sbt 0.11 plugin for testing giter8 templates",
+ "site":"https://github.com/n8han/giter8",
+ "tags":[],
+ "docs":"",
+ "licenses": [{
+ "name": "LGPL v3",
+ "url": "http://www.gnu.org/licenses/lgpl.txt"
+ }],
+ "resolvers": ["http://scala-tools.org/repo-releases"],
+ "dependencies": [{
+ "organization":"org.clapper",
+ "name": "scalasti",
+ "version": "0.5.5"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "sbt_2.9.1",
+ "version": "0.11.2"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "scripted-plugin",
+ "version": "0.11.2"
+ }],
+ "scalas": ["2.9.1"],
+ "sbt": true
+}
View
30 plugin/src/main/ls/0.4.4.json
@@ -0,0 +1,30 @@
+
+{
+ "organization":"net.databinder.giter8",
+ "name":"giter8-plugin",
+ "version":"0.4.4",
+ "description":"sbt 0.11 plugin for testing giter8 templates",
+ "site":"https://github.com/n8han/giter8",
+ "tags":[],
+ "docs":"",
+ "licenses": [{
+ "name": "LGPL v3",
+ "url": "http://www.gnu.org/licenses/lgpl.txt"
+ }],
+ "resolvers": ["http://scala-tools.org/repo-releases"],
+ "dependencies": [{
+ "organization":"org.clapper",
+ "name": "scalasti",
+ "version": "0.5.5"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "sbt_2.9.1",
+ "version": "0.11.2"
+ },{
+ "organization":"org.scala-tools.sbt",
+ "name": "scripted-plugin",
+ "version": "0.11.2"
+ }],
+ "scalas": ["2.9.1"],
+ "sbt": true
+}
View
30 plugin/src/main/ls/0.4.5.json
@@ -0,0 +1,30 @@
+
+{
+ "organization":"net.databinder.giter8",
+ "name":"giter8-plugin",
+ "version":"0.4.5",
+ "description":"sbt 0.11 plugin for testing giter8 templates",
+ "site":"https://github.com/n8han/giter8",
+ "tags":[],
+ "docs":"",
+ "licenses": [{
+ "name": "LGPL v3",
+ "url": "http://www.gnu.org/licenses/lgpl.txt"
+ }],
+ "resolvers": ["https://oss.sonatype.org/content/repositories/releases"],
+ "dependencies": [{
+ "organization":"org.clapper",
+ "name": "scalasti",
+ "version": "0.5.5"
+ },{
+ "organization":"org.scala-sbt",
+ "name": "sbt_2.9.1",
+ "version": "0.11.3"
+ },{
+ "organization":"org.scala-sbt",
+ "name": "scripted-plugin",
+ "version": "0.11.3"
+ }],
+ "scalas": ["2.9.1"],
+ "sbt": true
+}
View
64 plugin/src/main/scala/giterate-plugin.scala
@@ -0,0 +1,64 @@
+package giter8
+
+import sbt._
+
+object Plugin extends sbt.Plugin {
+ import Keys._
+ import scala.io.Source
+ import Scripted._
+
+ object G8Keys {
+ lazy val g8 = TaskKey[Seq[File]]("g8", "Apply default parameters to input templates and write to output.")
+ lazy val outputPath = SettingKey[File]("g8-output-path")
+ lazy val propertiesFile = SettingKey[File]("g8-properties-file")
+ lazy val properties = TaskKey[Map[String, String]]("g8-properties")
+ lazy val testScript = SettingKey[File]("g8-test-script")
+ lazy val g8Test = InputKey[Unit]("g8-test", "Run `sbt test` in output to smoke-test the templates")
+ lazy val g8TestBufferLog = SettingKey[Boolean]("g8-test-buffer-log")
+ }
+
+ import G8Keys._
+
+ lazy val baseGiter8Settings: Seq[sbt.Project.Setting[_]] = Seq(
+ g8 <<= (unmanagedSourceDirectories in g8,
+ sources in g8, outputPath in g8,
+ properties in g8, streams) map { (base, srcs, out, props, s) =>
+ IO.delete(out)
+ G8(srcs x relativeTo(base), out, props) },
+ unmanagedSourceDirectories in g8 <<= (sourceDirectory) { dir => (dir / "g8").get },
+ sources in g8 <<= (unmanagedSourceDirectories in g8, propertiesFile in g8) map { (dirs, pf) =>
+ ((dirs ** (-DirectoryFilter)) --- pf).get },
+ outputPath in g8 <<= (target) { dir => dir / "g8" },
+ propertiesFile in g8 <<= (unmanagedSourceDirectories in g8) { dirs => (dirs / "default.properties").get.head },
+ properties in g8 <<= (propertiesFile in g8) map { f =>
+ Ls.lookup(GIO.readProps(new java.io.FileInputStream(f))).fold(
+ err => sys.error(err),
+ identity
+ )
+ }
+ )
+
+ lazy val giter8TestSettings: Seq[sbt.Project.Setting[_]] = scriptedSettings ++ Seq(
+ g8Test in Test <<= scriptedTask,
+ scriptedDependencies <<= (g8 in Test) map { _ => },
+ g8 in Test <<= (unmanagedSourceDirectories in g8 in Compile,
+ sources in g8 in Compile, outputPath in g8 in Test,
+ properties in g8 in Test, testScript in Test, streams) map { (base, srcs, out, props, ts, s) =>
+ IO.delete(out)
+ val retval = G8(srcs x relativeTo(base), out, props)
+
+ // copy test script or generate one
+ val script = new File(out, "test")
+ if (ts.exists) IO.copyFile(ts, script)
+ else IO.write(script, """>test""")
+ retval :+ script
+ },
+ sbtTestDirectory <<= (target) { dir => dir / "sbt-test" },
+ outputPath in g8 in Test <<= (sbtTestDirectory, name) { (dir, name) => dir / name / "scripted" },
+ testScript <<= (sourceDirectory in Test) { dir => dir / "g8" / "test" },
+ scriptedBufferLog <<= g8TestBufferLog,
+ g8TestBufferLog := true
+ )
+
+ lazy val giter8Settings: Seq[sbt.Project.Setting[_]] = inConfig(Compile)(baseGiter8Settings) ++ giter8TestSettings
+}
View
65 plugin/src/main/scala/scripted.scala
@@ -0,0 +1,65 @@
+/** copied from https://github.com/harrah/xsbt/blob/0.11/scripted/plugin/ScriptedPlugin.scala.
+ * since ScriptedPlugin is not within a package, it cannot be reused from a packaged class.
+ */
+
+package giter8
+
+import sbt._
+
+import Project.Initialize
+import Keys._
+import classpath.ClasspathUtilities
+import java.lang.reflect.Method
+import java.util.Properties
+
+object Scripted {
+ def scriptedConf = config("g8-scripted-sbt") hide
+
+ val scriptedSbt = SettingKey[String]("_g8-scripted-sbt")
+ val sbtLauncher = SettingKey[File]("_g8-sbt-launcher")
+ val sbtTestDirectory = SettingKey[File]("_g8-sbt-test-directory")
+ val scriptedBufferLog = SettingKey[Boolean]("_g8-scripted-buffer-log")
+ final case class ScriptedScalas(build: String, versions: String)
+ val scriptedScalas = SettingKey[ScriptedScalas]("_g8-scripted-scalas")
+
+ val scriptedClasspath = TaskKey[PathFinder]("_g8-scripted-classpath")
+ val scriptedTests = TaskKey[AnyRef]("_g8-scripted-tests")
+ val scriptedRun = TaskKey[Method]("_g8-scripted-run")
+ val scriptedDependencies = TaskKey[Unit]("_g8-scripted-dependencies")
+ val scripted = InputKey[Unit]("_g8-scripted")
+
+ def scriptedTestsTask: Initialize[Task[AnyRef]] = (scriptedClasspath, scalaInstance) map {
+ (classpath, scala) =>
+ val loader = ClasspathUtilities.toLoader(classpath, scala.loader)
+ ModuleUtilities.getObject("sbt.test.ScriptedTests", loader)
+ }
+
+ def scriptedRunTask: Initialize[Task[Method]] = (scriptedTests) map {
+ (m) =>
+ m.getClass.getMethod("run", classOf[File], classOf[Boolean], classOf[String], classOf[String], classOf[String], classOf[Array[String]], classOf[File])
+ }
+
+ def scriptedTask: Initialize[InputTask[Unit]] = InputTask(_ => complete.Parsers.spaceDelimited("<arg>")) { result =>
+ (scriptedDependencies, scriptedTests, scriptedRun, sbtTestDirectory, scriptedBufferLog, scriptedSbt, scriptedScalas, sbtLauncher, result) map {
+ (deps, m, r, testdir, bufferlog, version, scriptedScalas, launcher, args) =>
+ try { r.invoke(m, testdir, bufferlog: java.lang.Boolean, version.toString, scriptedScalas.build, scriptedScalas.versions, args.toArray, launcher) }
+ catch { case e: java.lang.reflect.InvocationTargetException => throw e.getCause }
+ }
+ }
+
+ lazy val scriptedSettings: Seq[sbt.Project.Setting[_]] = Seq(
+ ivyConfigurations += scriptedConf,
+ resolvers += Resolver.url("Typesafe repository", new java.net.URL("http://typesafe.artifactoryonline.com/typesafe/ivy-releases/"))(Resolver.defaultIvyPatterns),
+ scriptedSbt <<= (appConfiguration)(_.provider.id.version),
+ scriptedScalas <<= (scalaVersion) { (scala) => ScriptedScalas(scala, scala) },
+ libraryDependencies <<= (libraryDependencies, scriptedScalas, scriptedSbt) {(deps, scalas, version) => deps :+ "org.scala-sbt" % ("scripted-sbt_" + scalas.build) % version % scriptedConf.toString },
+ sbtLauncher <<= (appConfiguration)(app => IO.classLocationFile(app.provider.scalaProvider.launcher.getClass)),
+ sbtTestDirectory <<= sourceDirectory / "sbt-test",
+ scriptedBufferLog := true,
+ scriptedClasspath <<= (classpathTypes, update) map { (ct, report) => PathFinder(Classpaths.managedJars(scriptedConf, ct, report).map(_.data)) },
+ scriptedTests <<= scriptedTestsTask,
+ scriptedRun <<= scriptedRunTask,
+ scriptedDependencies <<= (compile in Test, publishLocal) map { (analysis, pub) => Unit },
+ scripted <<= scriptedTask
+ )
+}
View
1  project/build.properties
@@ -0,0 +1 @@
+sbt.version=0.11.3
View
6 project/build.scala
@@ -5,7 +5,7 @@ object Builds extends sbt.Build {
import ls.Plugin.{lsSettings,LsKeys}
import sbtbuildinfo.Plugin._
- val g8version = "0.4.6-SNAPSHOT"
+ val g8version = "0.5.0-RC1"
val typesafeRepo = "Typesafe repo" at "http://repo.typesafe.com/typesafe/repo/"
val jgitRepo = "jGit repo" at "http://download.eclipse.org/jgit/maven/"
@@ -52,8 +52,8 @@ object Builds extends sbt.Build {
"Command line tool to apply templates defined on github",
name := "giter8",
libraryDependencies ++= Seq(
- "net.databinder" %% "dispatch-lift-json" % "0.8.5",
- "org.eclipse.jgit" % "org.eclipse.jgit" % "1.3.0.201202151440-r"
+ "org.eclipse.jgit" % "org.eclipse.jgit" % "1.3.0.201202151440-r",
+ "com.github.scala-incubator.io" %% "scala-io-file" % "0.4.0-seq"
),
sourceGenerators in Compile <+= buildInfo,
buildInfoKeys := Seq[Scoped](name, version, scalaVersion, sbtVersion),
View
7 project/plugins.sbt
@@ -1,4 +1,4 @@
-addSbtPlugin("net.databinder" % "conscript-plugin" % "0.3.3")
+addSbtPlugin("net.databinder" % "conscript-plugin" % "0.3.4")
resolvers ++= Seq(
"less is" at "http://repo.lessis.me",
@@ -8,6 +8,7 @@ resolvers ++= Seq(
resolvers += Resolver.url("sbt-plugin-releases",
new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)
-addSbtPlugin("me.lessis" % "ls-sbt" % "0.1.1")
+addSbtPlugin("me.lessis" % "ls-sbt" % "0.1.2")
-addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.1.2")
+addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.1.2")
Please sign in to comment.
Something went wrong with that request. Please try again.