package cbt
import java.io._
import java.nio.file._
import java.net._
trait Scaffold{
def logger: Logger
private def createFile( projectDirectory: File, fileName: String, code: String ){
val outputFile = projectDirectory ++ ("/" ++ fileName)
Stage0Lib.write( outputFile, code, StandardOpenOption.CREATE_NEW )
import scala.Console._
println( GREEN ++ "Created " ++ fileName ++ RESET )
}
def createMain(
projectDirectory: File
): Unit = {
createFile(projectDirectory, "Main.scala", s"""object Main{
def main( args: Array[String] ): Unit = {
println( Console.GREEN ++ "Hello World" ++ Console.RESET )
}
}
"""
)
}
def createBasicBuild(
projectDirectory: File
): Unit = {
createFile(projectDirectory, "build/build.scala", s"""import cbt._
import java.net.URL
import java.io.File
import scala.collection.immutable.Seq
class Build( context: Context ) extends BasicBuild( context ){
/*
override def dependencies = (
super.dependencies // don't forget super.dependencies here
++
Resolver( mavenCentral ).bind(
// automatically add Scala major version to artifact id
// CBT-style Scala dependency
ScalaDependency( "com.lihaoyi", "ammonite-ops", "0.5.5" )
// or SBT-style Scala dependency
"com.lihaoyi" %% "ammonite-ops" % "0.5.5"
// don't mess with the artifact id
// CBT-Style Java dependency
MavenDependency( "com.lihaoyi", "ammonite-ops_2.11", "0.5.5" )
// or SBT-style Java dependency
"com.lihaoyi" % "ammonite-ops_2.11" % "0.5.5"
)
)
*/
}
"""
)
}
def createBuildBuild(
projectDirectory: File
): Unit = {
createFile(projectDirectory, "build/build/build.scala", s"""import cbt._
import java.net.URL
import java.io.File
import scala.collection.immutable.Seq
class Build( context: Context ) extends BuildBuild( context ){
/*
override def dependencies = (
super.dependencies // don't forget super.dependencies here
++
Resolver( mavenCentral ).bind(
// automatically add Scala major version to artifact id
// CBT-style Scala dependency
ScalaDependency( "com.lihaoyi", "ammonite-ops", "0.5.5" )
// or SBT-style Scala dependency
"com.lihaoyi" %% "ammonite-ops" % "0.5.5"
// don't mess with the artifact id
// CBT-Style Java dependency
MavenDependency( "com.lihaoyi", "ammonite-ops_2.11", "0.5.5" )
// or SBT-style Java dependency
"com.lihaoyi" % "ammonite-ops_2.11" % "0.5.5"
)
)
*/
}
"""
)
}
/*,
"build/build/build.scala" -> s"""import cbt._
import java.net.URL
import java.io.File
import scala.collection.immutable.Seq
class Build(context: Context) extends BuildBuild(context){
override def dependencies = super.dependencies ++ Seq(
BuildDependency( projectDirectory.parent ++ "/build-shared")
// , "com.lihaoyi" %% "ammonite-ops" % "0.5.5"
)
}
""",
"test/Main.scala" -> s"""object Main{
def main( args: Array[String] ) = {
assert( false, "Go. Write some tests :)!" )
}
}
""",
"test/build/build.scala" -> s"""import cbt._
import java.net.URL
import java.io.File
import scala.collection.immutable.Seq
class Build(context: cbt.Context) extends BasicBuild(context) with BuildShared/* with cbt.mixins.ScalaTest*/{
// def scalaTestVersion = "2.2.6"
override def dependencies = super.dependencies ++ Seq(
// , "org.scalacheck" %% "scalacheck" % "1.13.0"
)
}
""",
"test/build/build/build.scala" -> s"""import cbt._
import java.net.URL
import java.io.File
import scala.collection.immutable.Seq
class Build(context: Context) extends BuildBuild(context){
override def scalaVersion: String = "2.11.8"
override def dependencies = super.dependencies ++ Seq(
BuildDependency( projectDirectory.parent.parent ++ "/build-shared")
// , "com.lihaoyi" %% "ammonite-ops" % "0.5.5"
)
}
""",
"build-shared/build/build.scala" -> s"""import cbt._
import java.net.URL
import java.io.File
import scala.collection.immutable.Seq
class Build(context: Context) extends BasicBuild(context){
override def scalaVersion: String = "$scalaVersion"
override def dependencies = super.dependencies ++ Seq( // don't forget super.dependencies here
CbtDependency
// , "org.cvogt" %% "scala-extensions" % "0.4.1"
)
}
""",
"build-shared/BuildShared.scala" -> s"""import cbt._
import java.net.URL
import java.io.File
import scala.collection.immutable.Seq
trait BuildShared extends BasicBuild{
override def scalaVersion: String = "$scalaVersion"
override def enableConcurrency = false // enable for speed, disable for debugging
override def groupId = "$groupId"
override def version = "$version"
// required for .pom file
override def url : URL = lib.requiredForPom("url")
override def developers: Seq[Developer] = lib.requiredForPom("developers")
override def licenses : Seq[License] = lib.requiredForPom("licenses")
override def scmUrl : String = lib.requiredForPom("scmUrl")
override def scmConnection: String = lib.requiredForPom("scmConnection")
override def pomExtra: Seq[scala.xml.Node] = Seq()
}
"""*/
}