Skip to content

Commit ea442bc

Browse files
authored
Update to sbt 1.3.13 (#1319)
* Update mima plugin * Update to sbt 1.3.13 * Update caching invalidation actions * Move mima filters to file * Scalafmt upgrade * format sbt 0.13 as well
1 parent b62d8cc commit ea442bc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1674
-1466
lines changed

.github/workflows/validate-pr.yml

+18-1
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,34 @@ jobs:
1515

1616
steps:
1717
- uses: actions/checkout@v1
18+
19+
- name: "Running shasum for cache invalidation"
20+
run: |
21+
shasum build.sbt \
22+
project/plugins.sbt \
23+
project/build.properties > gha.cache.tmp
24+
1825
- name: Loading ivy cache
1926
uses: actions/cache@v1
2027
with:
2128
path: ~/.ivy2/cache
22-
key: ${{ runner.os }}-ivy-${{ hashFiles('**/*.sbt') }}
29+
key: ${{ runner.os }}-ivy-${{ hashFiles('gha.cache.tmp') }}
2330
restore-keys: |
2431
${{ runner.os }}-ivy-
32+
33+
- name: Loading coursier cache
34+
uses: actions/cache@v1
35+
with:
36+
path: ~/.cache/coursier
37+
key: ${{ runner.os }}-coursier-${{ hashFiles('gha.cache.tmp') }}
38+
restore-keys: |
39+
${{ runner.os }}-coursier-
40+
2541
- name: Set up Azul JDK 1.8 and SBT
2642
uses: olafurpg/setup-scala@v7
2743
with:
2844
java-version: [email protected]
45+
2946
- name: Validate
3047
run: sbt "^validate"
3148

build.sbt

+5-39
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ name := "sbt-native-packager"
22
organization := "com.typesafe.sbt"
33
homepage := Some(url("https://github.com/sbt/sbt-native-packager"))
44

5-
Global / scalaVersion := "2.12.7"
5+
Global / onChangedBuildSource := ReloadOnSourceChanges
6+
Global / scalaVersion := "2.12.12"
67

78
// crossBuildingSettings
89
crossSbtVersions := Vector("0.13.17", "1.1.6")
@@ -58,42 +59,7 @@ mimaPreviousArtifacts := {
5859
val m = organization.value %% moduleName.value % "1.3.15"
5960
val sbtBinV = (sbtBinaryVersion in pluginCrossBuild).value
6061
val scalaBinV = (scalaBinaryVersion in update).value
61-
Set(Defaults.sbtPluginExtra(m cross CrossVersion.Disabled(), sbtBinV, scalaBinV))
62-
}
63-
mimaBinaryIssueFilters ++= {
64-
import com.typesafe.tools.mima.core._
65-
List(
66-
// added via #1179
67-
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmKeys.rpmEpoch"),
68-
ProblemFilters.exclude[ReversedMissingMethodProblem](
69-
"com.typesafe.sbt.packager.rpm.RpmKeys.com$typesafe$sbt$packager$rpm$RpmKeys$_setter_$rpmEpoch_="
70-
),
71-
ProblemFilters.exclude[MissingTypesProblem]("com.typesafe.sbt.packager.rpm.RpmMetadata$"),
72-
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmMetadata.apply"),
73-
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmMetadata.copy"),
74-
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmMetadata.this"),
75-
// added via #1251
76-
ProblemFilters.exclude[ReversedMissingMethodProblem](
77-
"com.typesafe.sbt.packager.universal.UniversalKeys.com$typesafe$sbt$packager$universal$UniversalKeys$_setter_$containerBuildImage_="
78-
),
79-
ProblemFilters
80-
.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.universal.UniversalKeys.containerBuildImage"),
81-
ProblemFilters.exclude[ReversedMissingMethodProblem](
82-
"com.typesafe.sbt.packager.graalvmnativeimage.GraalVMNativeImageKeys.graalVMNativeImageGraalVersion"
83-
),
84-
ProblemFilters.exclude[ReversedMissingMethodProblem](
85-
"com.typesafe.sbt.packager.graalvmnativeimage.GraalVMNativeImageKeys.com$typesafe$sbt$packager$graalvmnativeimage$GraalVMNativeImageKeys$_setter_$graalVMNativeImageGraalVersion_="
86-
),
87-
// added via #1279
88-
ProblemFilters.exclude[ReversedMissingMethodProblem](
89-
"com.typesafe.sbt.packager.docker.DockerKeys.com$typesafe$sbt$packager$docker$DockerKeys$_setter_$dockerAutoremoveMultiStageIntermediateImages_="
90-
),
91-
ProblemFilters.exclude[ReversedMissingMethodProblem](
92-
"com.typesafe.sbt.packager.docker.DockerKeys.dockerAutoremoveMultiStageIntermediateImages"
93-
),
94-
ProblemFilters
95-
.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.docker.DockerPlugin.publishLocalDocker")
96-
)
62+
Set(Defaults.sbtPluginExtra(m cross CrossVersion.disabled, sbtBinV, scalaBinV))
9763
}
9864

9965
// Release configuration
@@ -119,9 +85,9 @@ releaseProcess := Seq[ReleaseStep](
11985
bintrayOrganization := Some("sbt")
12086
bintrayRepository := "sbt-plugin-releases"
12187

122-
addCommandAlias("scalafmtAll", "; scalafmt ; test:scalafmt ; sbt:scalafmt")
88+
addCommandAlias("scalafmtFormatAll", "; ^scalafmtAll ; scalafmtSbt")
12389
// ci commands
124-
addCommandAlias("validateFormatting", "; scalafmt::test ; test:scalafmt::test ; sbt:scalafmt::test")
90+
addCommandAlias("validateFormatting", "; scalafmtCheckAll ; scalafmtSbtCheck")
12591
addCommandAlias("validate", "; clean ; update ; validateFormatting ; test ; mimaReportBinaryIssues")
12692

12793
// List all scripted test separately to schedule them in different travis-ci jobs.

project/ChangelogPlugin.scala

+29-19
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,29 @@ object ChangelogPlugin extends AutoPlugin {
6262

6363
private case class GithubChangeLogParameters(token: String)
6464

65-
private val githubChangeLogParser: Parser[GithubChangeLogParameters] = {
65+
private val githubChangeLogParser: Parser[GithubChangeLogParameters] =
6666
(Space ~ token("--token") ~ Space ~> StringBasic).map(GithubChangeLogParameters)
67-
}
6867

6968
override def projectSettings: Seq[Setting[_]] =
70-
Seq(generateChangelogToken := None, generateChangelog := {
71-
val log = streams.value.log
72-
val parameters = githubChangeLogParser.parsed
73-
Seq("github_changelog_generator", "--user", "sbt", "--project", "sbt-native-packager", "--token", parameters.token) ! log match {
74-
case 0 => log.success("CHANGELOG.md updated successfully")
75-
case n => sys.error(s"Failed updating CHANGELOG.md. Process existed with status code $n")
69+
Seq(
70+
generateChangelogToken := None,
71+
generateChangelog := {
72+
val log = streams.value.log
73+
val parameters = githubChangeLogParser.parsed
74+
Seq(
75+
"github_changelog_generator",
76+
"--user",
77+
"sbt",
78+
"--project",
79+
"sbt-native-packager",
80+
"--token",
81+
parameters.token
82+
) ! log match {
83+
case 0 => log.success("CHANGELOG.md updated successfully")
84+
case n => sys.error(s"Failed updating CHANGELOG.md. Process existed with status code $n")
85+
}
7686
}
77-
})
87+
)
7888

7989
private def generateChangelogStep(state: State): State = {
8090
val extracted = Project.extract(state)
@@ -101,11 +111,10 @@ object ChangelogPlugin extends AutoPlugin {
101111

102112
vcs(state).add(relativePath) !! log
103113
val vcsAddOutput = (vcs(state).status !!).trim
104-
if (vcsAddOutput.isEmpty) {
114+
if (vcsAddOutput.isEmpty)
105115
state.log.info("CHANGELOG.md hasn't been changed.")
106-
} else {
116+
else
107117
vcs(state).commit("Update changelog", sign, signOff) ! log
108-
}
109118

110119
state
111120
}
@@ -130,13 +139,14 @@ object ChangelogPlugin extends AutoPlugin {
130139
* @param state
131140
* @return a process logger
132141
*/
133-
private def toProcessLogger(state: State): ProcessLogger = new ProcessLogger {
134-
override def err(s: => String): Unit = state.log.info(s)
135-
override def out(s: => String): Unit = state.log.info(s)
136-
override def buffer[T](f: => T): T = state.log.buffer(f)
137-
}
142+
private def toProcessLogger(state: State): ProcessLogger =
143+
new ProcessLogger {
144+
override def err(s: => String): Unit = state.log.info(s)
145+
override def out(s: => String): Unit = state.log.info(s)
146+
override def buffer[T](f: => T): T = state.log.buffer(f)
147+
}
138148

139-
private def readToken(predefinedToken: Option[String]): String =
149+
private def readToken(predefinedToken: Option[String]): String =
140150
predefinedToken
141151
// https://github.com/github-changelog-generator/github-changelog-generator#github-token
142152
.orElse(sys.env.get("CHANGELOG_GITHUB_TOKEN"))
@@ -145,6 +155,6 @@ object ChangelogPlugin extends AutoPlugin {
145155
case Some(input) if input.trim.isEmpty => sys.error("No token provided")
146156
case Some(input) => input
147157
case None => sys.error("No token provided")
148-
})
158+
})
149159

150160
}

project/ReadmeReleasePlugin.scala

+10-17
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ import scala.sys.process._
99

1010
/**
1111
* == ReadmeRelease Plugin ==
12-
*
12+
*
1313
* Changes the version in the README.md during a release.
14-
*
1514
*/
1615
object ReadmeReleasePlugin extends AutoPlugin {
1716

@@ -33,22 +32,17 @@ object ReadmeReleasePlugin extends AutoPlugin {
3332

3433
}
3534

36-
3735
private def updateReadmeStep(state: State): State = {
3836
val extracted = Project.extract(state)
3937
val releaseVersion = extracted.get(version)
4038
val base = extracted.get(baseDirectory)
4139
val readmeFile = base / "README.md"
4240

4341
val versionRegex = """(\d{1,2}\.\d{1,2}\.\d{1,2})""".r
44-
val updatedReadmeContent = versionRegex.replaceAllIn(
45-
IO.read(readmeFile),
46-
releaseVersion
47-
)
42+
val updatedReadmeContent = versionRegex.replaceAllIn(IO.read(readmeFile), releaseVersion)
4843

4944
IO.write(readmeFile, updatedReadmeContent)
5045

51-
5246
state
5347
}
5448

@@ -67,11 +61,10 @@ object ReadmeReleasePlugin extends AutoPlugin {
6761

6862
vcs(state).add(relativePath) !! log
6963
val vcsAddOutput = (vcs(state).status !!).trim
70-
if (vcsAddOutput.isEmpty) {
64+
if (vcsAddOutput.isEmpty)
7165
state.log.info("README.md hasn't been changed.")
72-
} else {
66+
else
7367
vcs(state).commit("Update release version in readme", sign, signOff) ! log
74-
}
7568

7669
state
7770
}
@@ -96,11 +89,11 @@ object ReadmeReleasePlugin extends AutoPlugin {
9689
* @param state
9790
* @return a process logger
9891
*/
99-
private def toProcessLogger(state: State): ProcessLogger = new ProcessLogger {
100-
override def err(s: => String): Unit = state.log.info(s)
101-
override def out(s: => String): Unit = state.log.info(s)
102-
override def buffer[T](f: => T): T = state.log.buffer(f)
103-
}
104-
92+
private def toProcessLogger(state: State): ProcessLogger =
93+
new ProcessLogger {
94+
override def err(s: => String): Unit = state.log.info(s)
95+
override def out(s: => String): Unit = state.log.info(s)
96+
override def buffer[T](f: => T): T = state.log.buffer(f)
97+
}
10598

10699
}

project/build.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=1.2.8
1+
sbt.version=1.3.13

project/plugins.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ libraryDependencies += "jline" % "jline" % "2.11"
1616
addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.4")
1717

1818
// For code formatting
19-
addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.15")
19+
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.2")
2020

2121
// binary compatibility checks
22-
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.3.0")
22+
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.7.0")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# added via #1179
2+
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmKeys.rpmEpoch")
3+
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmKeys.com$typesafe$sbt$packager$rpm$RpmKeys$_setter_$rpmEpoch_=")
4+
ProblemFilters.exclude[MissingTypesProblem]("com.typesafe.sbt.packager.rpm.RpmMetadata$")
5+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmMetadata.apply")
6+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmMetadata.copy")
7+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmMetadata.this")
8+
9+
# added via #1251
10+
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.universal.UniversalKeys.com$typesafe$sbt$packager$universal$UniversalKeys$_setter_$containerBuildImage_=")
11+
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.universal.UniversalKeys.containerBuildImage")
12+
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.graalvmnativeimage.GraalVMNativeImageKeys.graalVMNativeImageGraalVersion")
13+
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.graalvmnativeimage.GraalVMNativeImageKeys.com$typesafe$sbt$packager$graalvmnativeimage$GraalVMNativeImageKeys$_setter_$graalVMNativeImageGraalVersion_=")
14+
# added via #1279
15+
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.docker.DockerKeys.com$typesafe$sbt$packager$docker$DockerKeys$_setter_$dockerAutoremoveMultiStageIntermediateImages_=")
16+
ProblemFilters.exclude[ReversedMissingMethodProblem]("com.typesafe.sbt.packager.docker.DockerKeys.dockerAutoremoveMultiStageIntermediateImages")
17+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.docker.DockerPlugin.publishLocalDocker")
18+
19+
# added via #1319
20+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.universal.UniversalDeployPlugin.requires")
21+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.universal.UniversalPlugin.requires")
22+
23+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.windows.WindowsDeployPlugin.requires")
24+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.windows.WindowsProductInfo.apply")
25+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.windows.AddDirectoryToPath.apply")
26+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.windows.WindowsFeature.apply")
27+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.windows.AddShortCuts.apply")
28+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.windows.NamespaceDefinitions.apply")
29+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.windows.ComponentFile.apply")
30+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.windows.WindowsPlugin.requires")
31+
32+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.debian.PackageInfo.apply")
33+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.debian.DebianControlScriptReplacements.apply")
34+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.debian.DebianPlugin.requires")
35+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.debian.DebianDeployPlugin.requires")
36+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.debian.PackageMetaData.apply")
37+
38+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmDependencies.apply")
39+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmPlugin.requires")
40+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmDeployPlugin.requires")
41+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmSpec.apply")
42+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.rpm.RpmDescription.apply")
43+
44+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.JavaServerAppPackaging.requires")
45+
46+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.jar.ClasspathJarPlugin.requires")
47+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.jar.LauncherJarPlugin.requires")
48+
49+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.systemloader.SystemdPlugin.requires")
50+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.systemloader.SystemVPlugin.requires")
51+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.systemloader.UpstartPlugin.requires")
52+
53+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.MultipleMains.apply")
54+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.BashStartScriptPlugin.trigger")
55+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.BashStartScriptPlugin.requires")
56+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.BashStartScriptPlugin.scriptTargetFolder")
57+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.BatStartScriptPlugin.trigger")
58+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.BatStartScriptPlugin.requires")
59+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.BatStartScriptPlugin.scriptTargetFolder")
60+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.ExplicitMainWithAdditional.apply")
61+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.archetypes.scripts.SingleMain.apply")
62+
63+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.validation.ValidationWarning.apply")
64+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.validation.ValidationError.apply")
65+
66+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.linux.LinuxFileMetaData.apply")
67+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.linux.LinuxPackageMapping.apply")
68+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.linux.LinuxPlugin.requires")
69+
70+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.jdkpackager.JDKPackagerDeployPlugin.requires")
71+
72+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.docker.DockerAlias.apply")
73+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.docker.Dockerfile.apply")
74+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.docker.ExecCmd.apply")
75+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.docker.CombinedCmd.apply")
76+
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sbt.packager.docker.Cmd.apply")

src/main/scala-sbt-0.13/com/typesafe/sbt/packager/MappingsHelper.scala

+7-8
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ object MappingsHelper {
6868
* Create mappings from your classpath. For example if you want to add additional
6969
* dependencies, like test or model.
7070
*
71-
*
7271
* @example Add all test artifacts to a separated test folder
7372
* {{{
7473
* mappings in Universal ++= fromClasspath((managedClasspath in Test).value, target = "test")
@@ -95,16 +94,17 @@ object MappingsHelper {
9594
* )
9695
* }}}
9796
*
98-
*
9997
* @param entries from where mappings should be created from
10098
* @param target folder, e.g. `model`. Must not end with a slash
10199
* @param includeArtifact function to determine if an artifact should result in a mapping
102100
* @param includeOnNoArtifact default is false. When there's no Artifact meta data remove it
103101
*/
104-
def fromClasspath(entries: Seq[Attributed[File]],
105-
target: String,
106-
includeArtifact: Artifact => Boolean,
107-
includeOnNoArtifact: Boolean = false): Seq[(File, String)] =
102+
def fromClasspath(
103+
entries: Seq[Attributed[File]],
104+
target: String,
105+
includeArtifact: Artifact => Boolean,
106+
includeOnNoArtifact: Boolean = false
107+
): Seq[(File, String)] =
108108
entries.filter(attr => attr.get(sbt.Keys.artifact.key) map includeArtifact getOrElse includeOnNoArtifact).map {
109109
attribute =>
110110
val file = attribute.data
@@ -114,8 +114,7 @@ object MappingsHelper {
114114
/**
115115
* Get the mappings for the given files relative to the given directories.
116116
*/
117-
def relative(files: Seq[File], dirs: Seq[File]): Seq[(File, String)] = {
117+
def relative(files: Seq[File], dirs: Seq[File]): Seq[(File, String)] =
118118
(files --- dirs) pair (relativeTo(dirs) | Path.flat)
119-
}
120119

121120
}

0 commit comments

Comments
 (0)