Skip to content

Commit b805c7e

Browse files
kimxogusmuuki88
authored andcommitted
[Docker] add multiple docker tags support (#1138)
* add multiple docker tags support * refactor, fix scripted tests * refactor DockerAlias, add dockerUntaggedImage * avoid mutable tags value * scalafmt * fix docker publishing * fix ProgressHandler, alias test * add docs * more readable apis in DockerAlias class * update docs * update sbt-scalafmt to 1.15 * fix scripted test * clean and rerun scalafmt
1 parent 6e94d79 commit b805c7e

23 files changed

Lines changed: 105 additions & 74 deletions

project/plugins.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ libraryDependencies += "jline" % "jline" % "2.11"
1212
addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.1")
1313

1414
// For code formatting
15-
addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.10")
15+
addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.15")

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ object Hashing {
1919
try {
2020
def read(): Unit = in.read(buffer) match {
2121
case x if x <= 0 => ()
22-
case size => md.update(buffer, 0, size); read()
22+
case size => md.update(buffer, 0, size); read()
2323
}
2424
read()
2525
} finally in.close()

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,9 @@ trait MaintainerScriptHelper {
6565
* @return maintainerScripts with appended `scripts`
6666
* @see [[maintainerScriptsAppendFromFile]]
6767
*/
68-
def maintainerScriptsAppend(
69-
current: Map[String, Seq[String]] = Map.empty,
70-
replacements: Seq[(String, String)] = Nil
71-
)(scripts: (String, String)*): Map[String, Seq[String]] = {
68+
def maintainerScriptsAppend(current: Map[String, Seq[String]] = Map.empty, replacements: Seq[(String, String)] = Nil)(
69+
scripts: (String, String)*
70+
): Map[String, Seq[String]] = {
7271
val appended = scripts.map {
7372
case (key, script) =>
7473
key -> TemplateWriter.generateScriptFromLines((current.getOrElse(key, Seq.empty) :+ script), replacements)

src/main/scala/com/typesafe/sbt/packager/archetypes/scripts/BashStartScriptKeys.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ trait BashStartScriptKeys {
2020
|""".stripMargin
2121
)
2222

23-
val bashScriptDefines = TaskKey[Seq[String]](
24-
"bashScriptDefines",
25-
"A list of definitions that should be written to the bash file template."
26-
)
23+
val bashScriptDefines =
24+
TaskKey[Seq[String]]("bashScriptDefines", "A list of definitions that should be written to the bash file template.")
2725
val bashScriptExtraDefines = TaskKey[Seq[String]](
2826
"bashScriptExtraDefines",
2927
"A list of extra definitions that should be written to the bash file template."

src/main/scala/com/typesafe/sbt/packager/archetypes/scripts/BashStartScriptPlugin.scala

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,8 @@ object BashStartScriptPlugin extends AutoPlugin with ApplicationIniGenerator wit
129129
else
130130
""
131131

132-
override protected[this] def createReplacementsForMainScript(
133-
mainClass: String,
134-
mainClasses: Seq[String],
135-
config: SpecializedScriptConfig
136-
): Seq[(String, String)] =
132+
override protected[this] def createReplacementsForMainScript(mainClass: String,
133+
mainClasses: Seq[String],
134+
config: SpecializedScriptConfig): Seq[(String, String)] =
137135
Seq("app_mainclass" -> mainClass, "available_main_classes" -> usageMainClassReplacement(mainClasses)) ++ config.replacements
138136
}

src/main/scala/com/typesafe/sbt/packager/archetypes/scripts/BatStartScriptPlugin.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ object BatStartScriptPlugin extends AutoPlugin with ApplicationIniGenerator with
101101
def apply(name: String): Seq[(String, String)] =
102102
Seq("APP_NAME" -> name, "APP_ENV_NAME" -> NameHelper.makeEnvFriendlyName(name))
103103

104-
def appDefines(mainClass: String, config: BatScriptConfig, replacements: Seq[(String, String)]): (String, String) = {
104+
def appDefines(mainClass: String,
105+
config: BatScriptConfig,
106+
replacements: Seq[(String, String)]): (String, String) = {
105107
val defines = Seq(makeWindowsRelativeClasspathDefine(config.scriptClasspath), Defines.mainClass(mainClass)) ++
106108
config.configLocation.map(Defines.configFileDefine) ++
107109
config.extraDefines
@@ -140,11 +142,9 @@ object BatStartScriptPlugin extends AutoPlugin with ApplicationIniGenerator with
140142
}
141143
}
142144

143-
override protected[this] def createReplacementsForMainScript(
144-
mainClass: String,
145-
mainClasses: Seq[String],
146-
config: SpecializedScriptConfig
147-
): Seq[(String, String)] =
145+
override protected[this] def createReplacementsForMainScript(mainClass: String,
146+
mainClasses: Seq[String],
147+
config: SpecializedScriptConfig): Seq[(String, String)] =
148148
config.replacements :+ Replacements.appDefines(mainClass, config, config.replacements)
149149

150150
}

src/main/scala/com/typesafe/sbt/packager/archetypes/scripts/StartScriptMainClassConfig.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ object StartScriptMainClassConfig {
4545
(mainClass, additionalMainClasses) match {
4646
// only one main - create the default script
4747
case (Some(main), Seq()) => SingleMain(main)
48-
case (None, Seq(main)) => SingleMain(main)
48+
case (None, Seq(main)) => SingleMain(main)
4949
// main explicitly set and multiple discoveredMainClasses
5050
case (Some(main), additional) => ExplicitMainWithAdditional(main, additional)
5151
// no main class at all

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -382,9 +382,7 @@ trait DebianPluginLike {
382382

383383
private[debian] final def validateUserGroupNames(user: String, streams: TaskStreams): Unit = {
384384
if ((UserNamePattern findFirstIn user).isEmpty) {
385-
streams.log.warn(
386-
"The user or group '" + user + "' may contain invalid characters for Debian based distributions"
387-
)
385+
streams.log.warn("The user or group '" + user + "' may contain invalid characters for Debian based distributions")
388386
}
389387
if (user.length > 32) {
390388
streams.log.warn(

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@ trait DebianKeys {
1616
SettingKey[Seq[String]]("debian-package-dependencies", "Packages that this debian package depends on.")
1717
val debianPackageProvides =
1818
SettingKey[Seq[String]]("debian-package-provides", "Packages that are provided by the currently packaged one.")
19-
val debianPackageRecommends = SettingKey[Seq[String]](
20-
"debian-package-recommends",
21-
"Packages recommended to use with the currently packaged one."
22-
)
19+
val debianPackageRecommends =
20+
SettingKey[Seq[String]]("debian-package-recommends", "Packages recommended to use with the currently packaged one.")
2321
val debianPackageInfo =
2422
SettingKey[PackageInfo]("debian-package-info", "Information (name, version, etc.) about a debian package.")
2523
val debianPackageMetadata =

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,18 @@ package com.typesafe.sbt.packager.docker
1010
* @param tag Optional tag for the image, e.g. the version
1111
*/
1212
case class DockerAlias(registryHost: Option[String], username: Option[String], name: String, tag: Option[String]) {
13-
protected val untagged = registryHost.map(_ + "/").getOrElse("") + username.map(_ + "/").getOrElse("") + name
1413

15-
/** Tag with (optional) given version */
16-
val versioned = untagged + tag.map(":" + _).getOrElse("")
14+
def withRegistryHost(registryHost: Option[String]): DockerAlias = copy(registryHost = registryHost)
1715

18-
/** Tag with version 'latest' */
19-
val latest = s"$untagged:latest"
16+
def withUsername(username: Option[String]): DockerAlias = copy(username = username)
17+
18+
def withName(name: String): DockerAlias = copy(name = name)
19+
20+
def withTag(tag: Option[String]): DockerAlias = copy(tag = tag)
21+
22+
override def toString: String =
23+
registryHost.map(_ + "/").getOrElse("") +
24+
username.map(_ + "/").getOrElse("") +
25+
name +
26+
tag.map(":" + _).getOrElse("")
2027
}

0 commit comments

Comments
 (0)