Skip to content

Commit 5a66a34

Browse files
jsuerethhuntc
authored andcommitted
Clean up name delegation in the plugin. A few rules:
* Each configuration should have its own `name` and `normalizedName` instance * Debian/Rpm delegate to Linux which delegates to project name. * Universal has its own name, which is used for generating BASH/BAT files * Separate key for the package filename now * Windows has its own name/normalized name which delegates to raw. Fixes sbt#188
1 parent 830cac4 commit 5a66a34

File tree

12 files changed

+31
-12
lines changed

12 files changed

+31
-12
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ object JavaAppPackaging {
6464
s <- script.toSeq
6565
} yield s -> ("bin/" + name + ".bat")
6666
},
67-
linuxPackageMappings in Debian <+= (normalizedName, defaultLinuxInstallLocation, target in Debian) map {
67+
linuxPackageMappings in Debian <+= (normalizedName in Debian, defaultLinuxInstallLocation, target in Debian) map {
6868
(name, installLocation, target) =>
6969
// create empty var/log directory
7070
val d = target / installLocation

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

+5-5
Original file line numberDiff line numberDiff line change
@@ -89,28 +89,28 @@ object JavaServerAppPackaging {
8989
*/
9090
def linuxSettings: Seq[Setting[_]] = Seq(
9191
// === logging directory mapping ===
92-
linuxPackageMappings <+= (normalizedName, defaultLinuxLogsLocation, daemonUser in Linux, daemonGroup in Linux) map {
92+
linuxPackageMappings <+= (normalizedName in Linux, defaultLinuxLogsLocation, daemonUser in Linux, daemonGroup in Linux) map {
9393
(name, logsDir, user, group) => packageTemplateMapping(logsDir + "/" + name)() withUser user withGroup group withPerms "755"
9494
},
95-
linuxPackageSymlinks <+= (normalizedName, defaultLinuxInstallLocation, defaultLinuxLogsLocation) map {
95+
linuxPackageSymlinks <+= (normalizedName in Linux, defaultLinuxInstallLocation, defaultLinuxLogsLocation) map {
9696
(name, install, logsDir) => LinuxSymlink(install + "/" + name + "/logs", logsDir + "/" + name)
9797
},
9898
// === etc config mapping ===
99-
bashScriptConfigLocation <<= normalizedName map (name => Some("/etc/default/" + name)),
99+
bashScriptConfigLocation <<= (normalizedName in Linux) map (name => Some("/etc/default/" + name)),
100100
linuxEtcDefaultTemplate <<= sourceDirectory map { dir =>
101101
val overrideScript = dir / "templates" / "etc-default"
102102
if (overrideScript.exists) overrideScript.toURI.toURL
103103
else etcDefaultTemplateSource
104104
},
105-
makeEtcDefault <<= (normalizedName, target in Universal, linuxEtcDefaultTemplate, linuxScriptReplacements)
105+
makeEtcDefault <<= (normalizedName in Linux, target in Universal, linuxEtcDefaultTemplate, linuxScriptReplacements)
106106
map makeEtcDefaultScript,
107107
linuxPackageMappings <++= (makeEtcDefault, normalizedName) map { (conf, name) =>
108108
conf.map(c => LinuxPackageMapping(Seq(c -> ("/etc/default/" + name)),
109109
LinuxFileMetaData(Users.Root, Users.Root)).withConfig()).toSeq
110110
},
111111

112112
// === /var/run/app pid folder ===
113-
linuxPackageMappings <+= (normalizedName, daemonUser in Linux, daemonGroup in Linux) map { (name, user, group) =>
113+
linuxPackageMappings <+= (normalizedName in Linux, daemonUser in Linux, daemonGroup in Linux) map { (name, user, group) =>
114114
packageTemplateMapping("/var/run/" + name)() withUser user withGroup group withPerms "755"
115115
})
116116

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

+2
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,7 @@ trait Keys {
4747
}
4848

4949
object Keys extends Keys {
50+
def name = sbt.Keys.name
51+
def normalizedName = sbt.Keys.normalizedName
5052
def sourceDirectory = sbt.Keys.sourceDirectory
5153
}

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

+4-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ trait LinuxPlugin extends Plugin {
3434
},
3535
packageSummary in Linux <<= packageSummary,
3636
packageDescription in Linux <<= packageDescription,
37-
daemonUser in Linux <<= normalizedName,
37+
name in Linux <<= name,
38+
normalizedName in Linux <<= (name in Linux) apply Project.normalizeModuleID,
39+
daemonUser in Linux <<= normalizedName in Linux,
3840
daemonGroup in Linux <<= daemonUser in Linux,
3941
daemonShell in Linux := "/bin/false",
4042
defaultLinuxInstallLocation := "/usr/share",
@@ -44,7 +46,7 @@ trait LinuxPlugin extends Plugin {
4446
linuxJavaAppStartScriptBuilder := JavaAppStartScript.Debian,
4547
// This one is begging for sbt 0.13 syntax...
4648
linuxScriptReplacements <<= (
47-
maintainer in Linux, packageSummary in Linux, daemonUser in Linux, daemonGroup in Linux, daemonShell in Linux, normalizedName,
49+
maintainer in Linux, packageSummary in Linux, daemonUser in Linux, daemonGroup in Linux, daemonShell in Linux, normalizedName in Linux,
4850
sbt.Keys.version, defaultLinuxInstallLocation, linuxJavaAppStartScriptBuilder)
4951
apply { (author, descr, daemonUser, daemonGroup, daemonShell, name, version, installLocation, builder) =>
5052
val appDir = installLocation + "/" + name

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

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ trait RpmKeys {
6161
object Keys extends RpmKeys {
6262
// METADATA keys.
6363
def name = sbt.Keys.name
64+
def normalizedName = sbt.Keys.normalizedName
6465
def version = sbt.Keys.version
6566
def maintainer = linux.Keys.maintainer
6667
def packageArchitecture = linux.Keys.packageArchitecture

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,13 @@ trait RpmPlugin extends Plugin with LinuxPlugin {
4141
rpmPostun := None,
4242
rpmBrpJavaRepackJars := false,
4343
rpmScriptsDirectory <<= sourceDirectory apply (_ / "rpm" / Names.Scriptlets),
44+
// Explicitly defer default settings to generic Linux Settings.
4445
packageSummary in Rpm <<= packageSummary in Linux,
4546
packageDescription in Rpm <<= packageDescription in Linux,
46-
target in Rpm <<= target(_ / "rpm")
47+
target in Rpm <<= target(_ / "rpm"),
48+
name in Rpm <<= name in Linux
4749
) ++ inConfig(Rpm)(Seq(
50+
normalizedName <<= name apply Project.normalizeModuleID,
4851
packageArchitecture := "noarch",
4952
rpmMetadata <<=
5053
(name, version, rpmRelease, rpmPrefix, packageArchitecture, rpmVendor, rpmOs, packageSummary, packageDescription, rpmAutoprov, rpmAutoreq) apply RpmMetadata,

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package universal
55
import sbt._
66

77
trait UniversalKeys {
8+
val packageFilename = SettingKey[String]("package-filename", "The base filename for the universal packages.")
89
val packageZipTarball = TaskKey[File]("package-zip-tarball", "Creates a tgz package.")
910
val packageXzTarball = TaskKey[File]("package-xz-tarball", "Creates a txz package.")
1011
val packageOsxDmg = TaskKey[File]("package-osx-dmg", "Creates a dmg package for OSX (only on osx).")

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

+7-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ trait UniversalPlugin extends Plugin {
2121
dist <<= dist in Universal,
2222
stage <<= stage in Universal,
2323
// TODO - New default to naming, is this right?
24-
name in Universal <<= (normalizedName, version) apply (_ + "-" + _)
24+
// TODO - We may need to do this for UniversalSrcs + UnviersalDocs
25+
name in Universal <<= name,
26+
name in UniversalDocs <<= name in Universal,
27+
name in UniversalSrc <<= name in Universal
2528
) ++
2629
makePackageSettingsForConfig(Universal) ++
2730
makePackageSettingsForConfig(UniversalDocs) ++
@@ -34,6 +37,8 @@ trait UniversalPlugin extends Plugin {
3437
makePackageSettings(packageZipTarball, config)(makeTgz) ++
3538
makePackageSettings(packageXzTarball, config)(makeTxz) ++
3639
inConfig(config)(Seq(
40+
normalizedName <<= name apply Project.normalizeModuleID,
41+
packageFilename <<= (normalizedName, version) apply (_ + "-" + _),
3742
mappings <<= sourceDirectory map findSources,
3843
dist <<= (packageBin, streams) map printDist,
3944
stagingDirectory <<= target apply (_ / "stage"),
@@ -74,7 +79,7 @@ trait UniversalPlugin extends Plugin {
7479
private[this] def makePackageSettings(packageKey: TaskKey[File], config: Configuration)(packager: Packager): Seq[Setting[_]] =
7580
inConfig(config)(Seq(
7681
mappings in packageKey <<= mappings map checkMappings,
77-
packageKey <<= (target, name, mappings in packageKey) map packager
82+
packageKey <<= (target, packageFilename, mappings in packageKey) map packager
7883
))
7984

8085
/** check that all mapped files actually exist */

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

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ trait WindowsPlugin extends Plugin {
1111
def windowsSettings: Seq[Setting[_]] = Seq(
1212
sourceDirectory in Windows <<= sourceDirectory(_ / "windows"),
1313
target in Windows <<= target apply (_ / "windows"),
14+
// TODO - Should this use normalized name like the linux guys?
1415
name in Windows <<= name,
1516
// Defaults so that our simplified building works
1617
candleOptions := Seq("-ext", "WixUtilExtension"),

src/sbt-test/debian/test-mapping/build.sbt

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ mapGenericFilesToLinux
66

77
name := "debian-test"
88

9+
name in Debian := "debian-test-override"
10+
911
version := "0.1.0"
1012

1113
maintainer := "Josh Suereth <[email protected]>"

src/sbt-test/debian/upstart-deb/build.sbt

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ mainClass in Compile := Some("empty")
1111

1212
name := "debian-test"
1313

14+
name in Debian := "debian-test"
15+
1416
version := "0.1.0"
1517

1618
maintainer := "Josh Suereth <[email protected]>"

src/sbt-test/universal/test-mapping-helpers/test

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Run the universal packaging.
2-
> universal:package-bin
2+
> show universal:package-bin
33
$ exists target/universal/simple-test-0.1.0.zip
44

55
> unzip

0 commit comments

Comments
 (0)