Skip to content

Commit 22a691a

Browse files
committed
FIX #217 Introduced executableScriptName setting
1 parent 05208e1 commit 22a691a

File tree

37 files changed

+241
-42
lines changed

37 files changed

+241
-42
lines changed

src/main/resources/com/typesafe/sbt/packager/archetypes/systemd/start-debian-template

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Requires=${{start_facilities}}
55
[Service]
66
Type=simple
77
WorkingDirectory=${{chdir}}
8-
ExecStart=${{chdir}}/bin/${{app_name}}
8+
ExecStart=${{chdir}}/bin/${{exec}}
99
Restart=always
1010
RestartSec=${{retryTimeout}}
1111

src/main/resources/com/typesafe/sbt/packager/archetypes/systemd/start-rpm-template

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Requires=${{start_facilities}}
55
[Service]
66
Type=simple
77
WorkingDirectory=${{chdir}}
8-
ExecStart=${{chdir}}/bin/${{app_name}}
8+
ExecStart=${{chdir}}/bin/${{exec}}
99
Restart=always
1010
RestartSec=${{retryTimeout}}
1111

src/main/resources/com/typesafe/sbt/packager/archetypes/systemv/start-debian-template

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ if [ -z "$DAEMON_USER" ]; then
2020
fi
2121

2222

23-
RUN_CMD="${{chdir}}/bin/${{app_name}}"
23+
RUN_CMD="${{chdir}}/bin/${{exec}}"
2424

2525

2626
start_daemon() {

src/main/resources/com/typesafe/sbt/packager/archetypes/systemv/start-rpm-template

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
# Source function library.
2929
. /etc/rc.d/init.d/functions
3030

31-
prog="${{app_name}}"
31+
prog="${{exec}}"
3232

3333
# FIXME The pid file should be handled by the executed script
3434
# The pid can be filled in in this script

src/main/scala/com/typesafe/sbt/PackagerPlugin.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ object SbtNativePackager extends Plugin
3030
NativePackagerKeys.maintainer := "",
3131
NativePackagerKeys.packageDescription := "",
3232
NativePackagerKeys.packageSummary := "",
33-
packageName <<= normalizedName
33+
NativePackagerKeys.packageName <<= normalizedName,
34+
NativePackagerKeys.executableScriptName <<= NativePackagerKeys.packageName
3435
)
3536

3637
import SettingsHelper._

src/main/scala/com/typesafe/sbt/packager/Keys.scala

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ object Keys extends linux.Keys
1212

1313
// These keys are used by the JavaApp/JavaServer archetypes.
1414
val packageName = SettingKey[String]("packageName", "Name of the created output package. Used for dirs/scripts.")
15+
val executableScriptName = SettingKey[String]("executableScriptName", "Name of the executing script.")
1516
val makeBashScript = TaskKey[Option[File]]("makeBashScript", "Creates or discovers the bash script used by this project.")
1617
val bashScriptDefines = TaskKey[Seq[String]]("bashScriptDefines", "A list of definitions that should be written to the bash file template.")
1718
val bashScriptExtraDefines = TaskKey[Seq[String]]("bashScriptExtraDefines", "A list of extra definitions that should be written to the bash file template.")

src/main/scala/com/typesafe/sbt/packager/archetypes/JavaApp.scala

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ package archetypes
55
import Keys._
66
import sbt._
77
import sbt.Project.Initialize
8-
import sbt.Keys.{ mappings, target, name, mainClass, normalizedName, sourceDirectory }
8+
import sbt.Keys.{ mappings, target, name, mainClass, sourceDirectory }
99
import com.typesafe.sbt.packager.linux.{ LinuxFileMetaData, LinuxPackageMapping }
1010
import SbtNativePackager._
1111

@@ -45,21 +45,21 @@ object JavaAppPackaging {
4545
hasMain getOrElse Nil
4646
},
4747
// TODO - Overridable bash template.
48-
makeBashScript <<= (bashScriptDefines, target in Universal, packageName, sourceDirectory) map makeUniversalBinScript,
48+
makeBashScript <<= (bashScriptDefines, target in Universal, executableScriptName, sourceDirectory) map makeUniversalBinScript,
4949
batScriptExtraDefines := Nil,
50-
batScriptReplacements <<= (normalizedName, Keys.mainClass in Compile, scriptClasspath, batScriptExtraDefines) map { (name, mainClass, cp, extras) =>
50+
batScriptReplacements <<= (packageName, Keys.mainClass in Compile, scriptClasspath, batScriptExtraDefines) map { (name, mainClass, cp, extras) =>
5151
mainClass map { mc =>
5252
JavaAppBatScript.makeReplacements(name = name, mainClass = mc, appClasspath = cp, extras = extras)
5353
} getOrElse Nil
5454

5555
},
56-
makeBatScript <<= (batScriptReplacements, target in Universal, packageName, sourceDirectory) map makeUniversalBatScript,
57-
mappings in Universal <++= (makeBashScript, packageName) map { (script, name) =>
56+
makeBatScript <<= (batScriptReplacements, target in Universal, executableScriptName, sourceDirectory) map makeUniversalBatScript,
57+
mappings in Universal <++= (makeBashScript, executableScriptName) map { (script, name) =>
5858
for {
5959
s <- script.toSeq
6060
} yield s -> ("bin/" + name)
6161
},
62-
mappings in Universal <++= (makeBatScript, packageName) map { (script, name) =>
62+
mappings in Universal <++= (makeBatScript, executableScriptName) map { (script, name) =>
6363
for {
6464
s <- script.toSeq
6565
} yield s -> ("bin/" + name + ".bat")
@@ -164,7 +164,7 @@ object JavaAppPackaging {
164164
!(name.endsWith(".jar") || name.endsWith("-sources.jar") || name.endsWith("-javadoc.jar"))
165165
}
166166

167-
def findProjectDependencyArtifacts: Initialize[Task[Seq[Attributed[File]]]] =
167+
def findProjectDependencyArtifacts: Def.Initialize[Task[Seq[Attributed[File]]]] =
168168
(sbt.Keys.buildDependencies, sbt.Keys.thisProjectRef, sbt.Keys.state) apply { (build, thisProject, stateTask) =>
169169
val refs = thisProject +: dependencyProjectRefs(build, thisProject)
170170
// Dynamic lookup of dependencies...

src/main/scala/com/typesafe/sbt/packager/debian/DebianPlugin.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ package debian
44

55
import Keys._
66
import sbt._
7-
import sbt.Keys.{ target, name, normalizedName, TaskStreams }
7+
import sbt.Keys.{ target, name, TaskStreams }
88
import linux.{ LinuxFileMetaData, LinuxPackageMapping, LinuxSymlink }
99
import linux.Keys.{ linuxScriptReplacements, daemonShell }
1010
import com.typesafe.sbt.packager.Hashing
@@ -28,6 +28,7 @@ trait DebianPlugin extends Plugin with linux.LinuxPlugin with NativePackaging wi
2828
target in Debian <<= (target, name in Debian, version in Debian) apply ((t, n, v) => t / (n + "-" + v)),
2929
name in Debian <<= (name in Linux),
3030
packageName in Debian <<= (packageName in Linux),
31+
executableScriptName in Debian <<= (executableScriptName in Linux),
3132
version in Debian <<= (version in Linux),
3233
linuxPackageMappings in Debian <<= linuxPackageMappings,
3334
packageDescription in Debian <<= packageDescription in Linux,

src/main/scala/com/typesafe/sbt/packager/debian/Keys.scala

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ object Keys extends DebianKeys {
4848
// Metadata keys
4949
def name = sbt.Keys.name
5050
def packageName = linux.Keys.packageName
51+
def executableScriptName = linux.Keys.executableScriptName
5152
def version = sbt.Keys.version
5253
def maintainer = linux.Keys.maintainer
5354
def packageArchitecture = linux.Keys.packageArchitecture

src/main/scala/com/typesafe/sbt/packager/docker/DockerPlugin.scala

+6-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import sbt._
88
trait DockerPlugin extends Plugin with UniversalPlugin {
99
val Docker = config("docker") extend Universal
1010

11-
private[this] final def makeDockerContent(dockerBaseImage: String, dockerBaseDirectory: String, maintainer: String, daemonUser: String, name: String, exposedPorts: Seq[Int], exposedVolumes: Seq[String]) = {
11+
private[this] final def makeDockerContent(dockerBaseImage: String, dockerBaseDirectory: String, maintainer: String, daemonUser: String, execScript: String, exposedPorts: Seq[Int], exposedVolumes: Seq[String]) = {
1212
val headerCommands = Seq(
1313
Cmd("FROM", dockerBaseImage),
1414
Cmd("MAINTAINER", maintainer)
@@ -19,7 +19,7 @@ trait DockerPlugin extends Plugin with UniversalPlugin {
1919
Cmd("WORKDIR", "%s" format dockerBaseDirectory),
2020
ExecCmd("RUN", "chown", "-R", daemonUser, "."),
2121
Cmd("USER", daemonUser),
22-
ExecCmd("ENTRYPOINT", "bin/%s" format name),
22+
ExecCmd("ENTRYPOINT", "bin/%s" format execScript),
2323
ExecCmd("CMD")
2424
)
2525

@@ -49,8 +49,8 @@ trait DockerPlugin extends Plugin with UniversalPlugin {
4949
}
5050

5151
private[this] final def generateDockerConfig(
52-
dockerBaseImage: String, dockerBaseDirectory: String, maintainer: String, daemonUser: String, packageName: String, exposedPorts: Seq[Int], exposedVolumes: Seq[String], target: File) = {
53-
val dockerContent = makeDockerContent(dockerBaseImage, dockerBaseDirectory, maintainer, daemonUser, packageName, exposedPorts, exposedVolumes)
52+
dockerBaseImage: String, dockerBaseDirectory: String, maintainer: String, daemonUser: String, execScript: String, exposedPorts: Seq[Int], exposedVolumes: Seq[String], target: File) = {
53+
val dockerContent = makeDockerContent(dockerBaseImage, dockerBaseDirectory, maintainer, daemonUser, execScript, exposedPorts, exposedVolumes)
5454

5555
val f = target / "Dockerfile"
5656
IO.write(f, dockerContent)
@@ -150,14 +150,15 @@ trait DockerPlugin extends Plugin with UniversalPlugin {
150150
dockerBaseImage := "dockerfile/java",
151151
name in Docker <<= name,
152152
packageName in Docker <<= packageName,
153+
executableScriptName in Docker <<= executableScriptName,
153154
dockerRepository := None,
154155
sourceDirectory in Docker <<= sourceDirectory apply (_ / "docker"),
155156
target in Docker <<= target apply (_ / "docker"),
156157

157158
// TODO this must be changed, when there is a setting for the startScripts name
158159
dockerGenerateConfig <<=
159160
(dockerBaseImage in Docker, defaultLinuxInstallLocation in Docker, maintainer in Docker, daemonUser in Docker,
160-
packageName /* this is not scoped!*/ , dockerExposedPorts in Docker, dockerExposedVolumes in Docker, target in Docker) map
161+
executableScriptName /* this is not scoped!*/ , dockerExposedPorts in Docker, dockerExposedVolumes in Docker, target in Docker) map
161162
generateDockerConfig
162163
) ++ mapGenericFilesToDocker ++ inConfig(Docker)(Seq(
163164
daemonUser := "daemon",

src/main/scala/com/typesafe/sbt/packager/docker/Keys.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ object Keys extends DockerKeys {
2121
def mappings = sbt.Keys.mappings
2222
def name = sbt.Keys.name
2323
def packageName = universal.Keys.packageName
24-
def normalizedName = universal.Keys.normalizedName
24+
def executableScriptName = universal.Keys.executableScriptName
2525
def stage = universal.Keys.stage
2626
def publish = sbt.Keys.publish
2727
def publishArtifact = sbt.Keys.publishArtifact

src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@ trait Keys {
4949
object Keys extends Keys {
5050
def name = sbt.Keys.name
5151
def packageName = packager.Keys.packageName
52-
def normalizedName = sbt.Keys.normalizedName
52+
def executableScriptName = packager.Keys.executableScriptName
5353
def sourceDirectory = sbt.Keys.sourceDirectory
5454
}

src/main/scala/com/typesafe/sbt/packager/linux/LinuxPlugin.scala

+6-5
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ trait LinuxPlugin extends Plugin {
3636
packageDescription in Linux <<= packageDescription,
3737
name in Linux <<= name,
3838
packageName in Linux <<= packageName,
39-
normalizedName in Linux <<= (name in Linux) apply Project.normalizeModuleID,
40-
daemonUser in Linux <<= normalizedName in Linux,
39+
executableScriptName in Linux <<= executableScriptName,
40+
daemonUser in Linux <<= packageName in Linux,
4141
daemonGroup in Linux <<= daemonUser in Linux,
4242
daemonShell in Linux := "/bin/false",
4343
defaultLinuxInstallLocation := "/usr/share",
@@ -47,16 +47,17 @@ trait LinuxPlugin extends Plugin {
4747
linuxJavaAppStartScriptBuilder := JavaAppStartScript.Debian,
4848
// This one is begging for sbt 0.13 syntax...
4949
linuxScriptReplacements <<= (
50-
maintainer in Linux, packageSummary in Linux, daemonUser in Linux, daemonGroup in Linux, daemonShell in Linux, normalizedName in Linux,
50+
maintainer in Linux, packageSummary in Linux, daemonUser in Linux, daemonGroup in Linux, daemonShell in Linux,
51+
packageName in Linux, executableScriptName in Linux,
5152
sbt.Keys.version, defaultLinuxInstallLocation, linuxJavaAppStartScriptBuilder)
52-
apply { (author, descr, daemonUser, daemonGroup, daemonShell, name, version, installLocation, builder) =>
53+
apply { (author, descr, daemonUser, daemonGroup, daemonShell, name, execScript, version, installLocation, builder) =>
5354
val appDir = installLocation + "/" + name
5455

5556
// TODO Making replacements should be done somewhere else. Maybe TemplateWriter
5657
builder.makeReplacements(
5758
author = author,
5859
description = descr,
59-
execScript = name,
60+
execScript = execScript,
6061
chdir = appDir,
6162
appName = name,
6263
daemonUser = daemonUser,

src/main/scala/com/typesafe/sbt/packager/rpm/Keys.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ object Keys extends RpmKeys {
6262
// METADATA keys.
6363
def name = sbt.Keys.name
6464
def packageName = packager.Keys.packageName
65-
def normalizedName = sbt.Keys.normalizedName
65+
def executableScriptName = linux.Keys.executableScriptName
6666
def version = sbt.Keys.version
6767
def maintainer = linux.Keys.maintainer
6868
def packageArchitecture = linux.Keys.packageArchitecture

src/main/scala/com/typesafe/sbt/packager/rpm/RpmPlugin.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ trait RpmPlugin extends Plugin with LinuxPlugin {
4646
packageDescription in Rpm <<= packageDescription in Linux,
4747
target in Rpm <<= target(_ / "rpm"),
4848
name in Rpm <<= name in Linux,
49-
packageName in Rpm <<= packageName in Linux
49+
packageName in Rpm <<= packageName in Linux,
50+
executableScriptName in Rpm <<= executableScriptName in Linux
5051
) ++ inConfig(Rpm)(Seq(
51-
normalizedName <<= name apply Project.normalizeModuleID,
5252
packageArchitecture := "noarch",
5353
rpmMetadata <<=
5454
(packageName, version, rpmRelease, rpmPrefix, packageArchitecture, rpmVendor, rpmOs, packageSummary, packageDescription, rpmAutoprov, rpmAutoreq) apply RpmMetadata,

src/main/scala/com/typesafe/sbt/packager/universal/Keys.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ object Keys extends UniversalKeys {
2020
def packageDoc = sbt.Keys.packageDoc
2121
def name = sbt.Keys.name
2222
def packageName = packager.Keys.packageName
23-
def normalizedName = sbt.Keys.normalizedName
23+
def executableScriptName = packager.Keys.executableScriptName
2424
def target = sbt.Keys.target
2525
def sourceDirectory = sbt.Keys.sourceDirectory
2626
def streams = sbt.Keys.streams

src/main/scala/com/typesafe/sbt/packager/universal/UniversalPlugin.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ trait UniversalPlugin extends Plugin {
2525
name in Universal <<= name,
2626
name in UniversalDocs <<= name in Universal,
2727
name in UniversalSrc <<= name in Universal,
28-
packageName in Universal <<= packageName
28+
packageName in Universal <<= packageName,
29+
executableScriptName in Universal <<= executableScriptName
2930
) ++
3031
makePackageSettingsForConfig(Universal) ++
3132
makePackageSettingsForConfig(UniversalDocs) ++
@@ -38,7 +39,6 @@ trait UniversalPlugin extends Plugin {
3839
makePackageSettings(packageZipTarball, config)(makeTgz) ++
3940
makePackageSettings(packageXzTarball, config)(makeTxz) ++
4041
inConfig(config)(Seq(
41-
normalizedName <<= name apply Project.normalizeModuleID,
4242
packageName <<= (packageName, version) apply (_ + "-" + _),
4343
mappings <<= sourceDirectory map findSources,
4444
dist <<= (packageBin, streams) map printDist,

src/main/scala/com/typesafe/sbt/packager/windows/Keys.scala

+6-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ trait WindowsKeys {
1414
val wixProductConfig = TaskKey[xml.Node]("wix-product-xml", "The WIX XML configuration for a product (nested in Wix/Product elements).")
1515
val wixConfig = TaskKey[xml.Node]("wix-xml", "The WIX XML configuration for this package.")
1616
val wixFile = TaskKey[File]("wix-file", "The WIX XML file to package with.")
17-
@deprecated("use packageBin instead!")
17+
@deprecated("use packageBin instead!", "0.7.0")
1818
val packageMsi = TaskKey[File]("package-msi", "creates a new windows CAB file containing everything for the installation.")
1919
val candleOptions = SettingKey[Seq[String]]("candle-options", "Options to pass to the candle.exe program.")
2020
val lightOptions = SettingKey[Seq[String]]("light-options", "Options to pass to the light.exe program.")
@@ -25,11 +25,12 @@ object Keys extends WindowsKeys {
2525
def target = sbt.Keys.target
2626
def mappings = sbt.Keys.mappings
2727
def name = sbt.Keys.name
28+
def packageName = packager.Keys.packageName
29+
def executableScriptName = packager.Keys.executableScriptName
2830
def streams = sbt.Keys.streams
2931
def sourceDirectory = sbt.Keys.sourceDirectory
3032
def packageBin = sbt.Keys.packageBin
31-
// TODO - move this somewhere generic.
32-
def maintainer = linux.Keys.maintainer
33-
def packageSummary = linux.Keys.packageSummary
34-
def packageDescription = linux.Keys.packageDescription
33+
def maintainer = packager.Keys.maintainer
34+
def packageSummary = packager.Keys.packageSummary
35+
def packageDescription = packager.Keys.packageDescription
3536
}

src/main/scala/com/typesafe/sbt/packager/windows/WindowsPlugin.scala

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package windows
44

55
import Keys._
66
import sbt._
7+
import sbt.Keys.{ normalizedName }
78

89
trait WindowsPlugin extends Plugin {
910
val Windows = config("windows")
@@ -13,6 +14,7 @@ trait WindowsPlugin extends Plugin {
1314
target in Windows <<= target apply (_ / "windows"),
1415
// TODO - Should this use normalized name like the linux guys?
1516
name in Windows <<= name,
17+
packageName in Windows <<= normalizedName,
1618
// Defaults so that our simplified building works
1719
candleOptions := Seq("-ext", "WixUtilExtension"),
1820
lightOptions := Seq("-ext", "WixUIExtension",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import NativePackagerKeys._
2+
3+
packagerSettings
4+
5+
packageArchetype.java_server
6+
7+
name := "debian-test"
8+
9+
executableScriptName := "debian-exec"
10+
11+
version := "0.1.0"
12+
13+
maintainer := "Josh Suereth <[email protected]>"
14+
15+
packageSummary := "Test debian package"
16+
17+
packageDescription := """A fun package description of our software,
18+
with multiple lines."""
19+
20+
debianPackageDependencies in Debian ++= Seq("java2-runtime", "bash (>= 2.05a-11)")
21+
22+
debianPackageRecommends in Debian += "git"
23+
24+
TaskKey[Unit]("check-upstart-script") <<= (target, streams) map { (target, out) =>
25+
val script = IO.read(target / "debian-test-0.1.0" / "etc" / "init" / "debian-test.conf")
26+
assert(script.contains("exec ./bin/debian-exec"), "wrong exec call\n" + script)
27+
out.log.success("Successfully tested control script")
28+
()
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("project.version"))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package test
2+
3+
object Main {
4+
def main (args: Array[String]) {
5+
//server app imitation
6+
while (true){
7+
Thread.sleep(1000L)
8+
}
9+
}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Run the debian packaging.
2+
> debian:package-bin
3+
$ exists target/debian-test_0.1.0_all.deb
4+
# Testing the packageName configuration
5+
$ exists target/debian-test-0.1.0/DEBIAN
6+
$ exists target/debian-test-0.1.0/DEBIAN/control
7+
# --------------------------------------------
8+
$ exists target/debian-test-0.1.0/usr/
9+
$ exists target/debian-test-0.1.0/usr/share/
10+
$ exists target/debian-test-0.1.0/usr/share/debian-test/
11+
$ exists target/debian-test-0.1.0/usr/share/debian-test/bin/
12+
$ exists target/debian-test-0.1.0/usr/share/debian-test/bin/debian-exec
13+
$ exists target/debian-test-0.1.0/var/log/debian-test/
14+
$ exists target/debian-test-0.1.0/var/run/debian-test/
15+
$ exists target/debian-test-0.1.0/etc/default/debian-test/
16+
# --------------------------------------------
17+
$ exists target/debian-test-0.1.0/etc/init/debian-test.conf
18+
> check-upstart-script
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import com.typesafe.sbt.SbtNativePackager._
2+
import NativePackagerKeys._
3+
4+
packageArchetype.java_application
5+
6+
name := "docker-test"
7+
8+
packageName in Docker := "docker-package"
9+
10+
executableScriptName := "docker-exec"
11+
12+
version := "0.1.0"
13+
14+
maintainer := "Gary Coady <[email protected]>"
15+
16+
TaskKey[Unit]("check-dockerfile") <<= (target, streams) map { (target, out) =>
17+
val dockerfile = IO.read(target / "docker" / "Dockerfile")
18+
assert(dockerfile.contains("ENTRYPOINT [\"bin/docker-exec\"]\n"), "dockerfile doesn't contain ENTRYPOINT [\"docker-exec\"]\n" + dockerfile)
19+
out.log.success("Successfully tested control script")
20+
()
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("project.version"))

0 commit comments

Comments
 (0)