1 Star 0 Fork 0

Git工具集 / giter8

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
build.sbt 8.01 KB
一键复制 编辑 原始数据 按行查看 历史
xuwei-k 提交于 2020-05-24 00:51 . version 0.13.0-SNAPSHOT
import Dependencies._
import CrossVersion.partialVersion
val g8version = "0.13.0-SNAPSHOT"
val javaVmArgs: List[String] = {
import scala.collection.JavaConverters._
java.lang.management.ManagementFactory.getRuntimeMXBean.getInputArguments.asScala.toList
}
val coursierBootstrap = taskKey[File]("create bootstrap jar")
val coursierBootstrapBatch = taskKey[File]("create bootstrap jar")
ThisBuild / organization := "org.foundweekends.giter8"
ThisBuild / version := g8version
ThisBuild / scalaVersion := scala212
ThisBuild / organizationName := "foundweekends"
ThisBuild / organizationHomepage := Some(url("http://foundweekends.org/"))
ThisBuild / scalacOptions ++= Seq("-language:_", "-deprecation", "-Xlint", "-Xfuture")
ThisBuild / publishArtifact in (Compile, packageBin) := true
ThisBuild / homepage := Some(url("http://www.foundweekends.org/giter8/"))
ThisBuild / publishMavenStyle := true
ThisBuild / publishTo :=
Some(
"releases" at
"https://oss.sonatype.org/service/local/staging/deploy/maven2"
)
ThisBuild / publishArtifact in Test := false
ThisBuild / parallelExecution in Test := false
ThisBuild / licenses := Seq("Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0.txt"))
ThisBuild / developers := List(
Developer("n8han", "Nathan Hamblen", "@n8han", url("http://github.com/n8han")),
Developer("eed3si9n", "Eugene Yokota", "@eed3si9n", url("https://github.com/eed3si9n"))
)
ThisBuild / scmInfo := Some(
ScmInfo(url("https://github.com/foundweekends/giter8"), "git@github.com:foundweekends/giter8.git")
)
// posterous title needs to be giter8, so both app and root are named giter8
lazy val root = (project in file("."))
.enablePlugins(TravisSitePlugin, NoPublish)
.aggregate(app, lib, scaffold, plugin, gitsupport, launcher)
.settings(
name := "giter8",
crossScalaVersions := Nil,
siteGitHubRepo := "foundweekends/giter8",
siteEmail := { "eed3si9n" + "@" + "gmail.com" },
publish / skip := true,
customCommands
)
lazy val app = (project in file("app"))
.disablePlugins(BintrayPlugin)
.enablePlugins(SonatypePublish)
.dependsOn(lib, gitsupport)
.settings(
description := "Command line tool to apply templates defined on GitHub",
name := "giter8",
crossScalaVersions := List(scala212, scala213),
sourceDirectory in csRun := {
(baseDirectory).value.getParentFile / "src" / "main" / "conscript"
},
libraryDependencies += launcherIntf
)
lazy val crossSbt = Seq(
crossSbtVersions := List(sbt1),
scalaVersion := {
val crossSbtVersion = (sbtVersion in pluginCrossBuild).value
partialVersion(crossSbtVersion) match {
case Some((1, _)) => scala212
case _ =>
throw new Exception(s"unexpected sbt version: $crossSbtVersion (supported: 1.X)")
}
}
)
lazy val scaffold = (project in file("scaffold"))
.enablePlugins(SbtPlugin, BintrayPublish, ScriptedPlugin)
.dependsOn(lib)
.settings(crossSbt)
.settings(
name := "sbt-giter8-scaffold",
description := "sbt plugin for scaffolding giter8 templates",
sbtPlugin := true,
crossScalaVersions := List(scala212),
scriptedLaunchOpts ++= javaVmArgs.filter(a => Seq("-Xmx", "-Xms", "-XX").exists(a.startsWith)),
scriptedBufferLog := false,
scriptedLaunchOpts += ("-Dplugin.version=" + version.value),
scripted := scripted
.dependsOn(publishLocal in lib)
.evaluated,
test in Test := {
scripted.toTask("").value
}
)
lazy val plugin = (project in file("plugin"))
.enablePlugins(SbtPlugin, BintrayPublish, ScriptedPlugin)
.dependsOn(lib)
.settings(crossSbt)
.settings(
name := "sbt-giter8",
description := "sbt plugin for testing giter8 templates",
sbtPlugin := true,
crossScalaVersions := List(scala212),
resolvers += Resolver.typesafeIvyRepo("releases"),
scriptedLaunchOpts ++= javaVmArgs.filter(a => Seq("-Xmx", "-Xms", "-XX").exists(a.startsWith)),
scriptedBufferLog := false,
scriptedLaunchOpts += ("-Dplugin.version=" + version.value),
scripted := scripted
.dependsOn(publishLocal in lib)
.evaluated,
libraryDependencies += {
val crossSbtVersion = (sbtVersion in pluginCrossBuild).value
val artifact =
partialVersion(crossSbtVersion) match {
case Some((1, _)) =>
"org.scala-sbt" %% "scripted-plugin"
case _ =>
throw new Exception(s"unexpected sbt version: $crossSbtVersion (supported: 1.X)")
}
artifact % crossSbtVersion
},
test in Test := {
scripted.toTask("").value
}
)
lazy val gitsupport = (project in file("cli-git"))
.disablePlugins(BintrayPlugin)
.enablePlugins(BuildInfoPlugin, SonatypePublish)
.settings(
description := "cli and git support library for Giter8",
name := "giter8-cli-git",
crossScalaVersions := List(scala212, scala213),
libraryDependencies ++= Seq(
scopt,
jgit,
jsch,
jschSshAgent,
jschConnectorFactory,
commonsIo,
scalatest % Test,
scalamock % Test
),
run / fork := true,
buildInfoKeys := Seq(name, version, scalaVersion, sbtVersion),
buildInfoPackage := "giter8"
)
lazy val lib = (project in file("library"))
.disablePlugins(BintrayPlugin)
.enablePlugins(SonatypePublish)
.dependsOn(gitsupport)
.settings(crossSbt)
.settings(
name := "giter8-lib",
description := "shared library for app and plugin",
crossScalaVersions := List(scala212, scala213),
libraryDependencies ++= Seq(
stringTemplate,
jgit,
commonsIo,
plexusArchiver,
scalacheck % Test,
sbtIo % Test,
scalatest % Test,
scalamock % Test,
"org.slf4j" % "slf4j-simple" % "1.7.30" % Test
) ++
(CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, scalaMajor)) if scalaMajor >= 11 =>
Seq(scalaXml, parserCombinator)
case _ => Nil
})
)
lazy val launcher = (project in file("launcher"))
.disablePlugins(BintrayPlugin)
.enablePlugins(SonatypePublish)
.enablePlugins(ConscriptPlugin)
.dependsOn(gitsupport)
.settings(
description := "Command line tool to apply templates defined on GitHub",
name := "giter8-launcher",
crossScalaVersions := List(scala212, scala213),
libraryDependencies += coursier,
run / fork := true
// assemblyMergeStrategy in assembly := {
// case "plugin.properties" => MergeStrategy.concat
// case "module-info.class" => MergeStrategy.discard
// case x =>
// val oldStrategy = (assemblyMergeStrategy in assembly).value
// oldStrategy(x)
// },
)
lazy val bootstrap = (project in file("bootstrap"))
.disablePlugins(BintrayPlugin)
.enablePlugins(SonatypePublish)
.settings(
description := "Bootstrap script for Giter8 launcher",
name := "giter8-bootstrap",
coursierBootstrap := {
val t = target.value / "g8"
val v = version.value
sys.process
.Process(
s"""coursier bootstrap org.foundweekends.giter8:giter8-launcher_2.12:$v --main giter8.LauncherMain -o $t --bat -f"""
)
.!
t
},
coursierBootstrapBatch := {
val _ = coursierBootstrap.value
target.value / "g8.bat"
},
coursierBootstrap / artifact := {
val o = (coursierBootstrap / artifact).value
o.withExtension("sh")
},
coursierBootstrapBatch / artifact := {
val o = (coursierBootstrapBatch / artifact).value
o.withExtension("bat")
},
addArtifact(coursierBootstrap / artifact, coursierBootstrap),
addArtifact(coursierBootstrapBatch / artifact, coursierBootstrapBatch)
)
def customCommands: Seq[Setting[_]] = Seq(
commands += Command.command("release") { state =>
"clean" ::
s"++${scala213}" ::
"lib/publishSigned" ::
"gitsupport/publishSigned" ::
"app/publishSigned" ::
s"++${scala212}" ::
s"^^${sbt1}" ::
"lib/publishSigned" ::
"gitsupport/publishSigned" ::
"launcher/publishSigned" ::
"app/publishSigned" ::
"plugin/publishSigned" ::
"scaffold/publishSigned" ::
"reload" ::
state
}
)
Scala
1
https://gitee.com/vcs-all-in-one/giter8.git
git@gitee.com:vcs-all-in-one/giter8.git
vcs-all-in-one
giter8
giter8
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891