Better --intransitive option from the command-line tools

--intransitive accepts a dependency as argument, and adds it as
intransitive dependency - other dependencies are left untouched
This commit is contained in:
Alexandre Archambault 2016-05-29 23:42:02 +02:00
parent c5fb28f982
commit baa9c17d20
No known key found for this signature in database
GPG Key ID: 14640A6839C263A9
2 changed files with 25 additions and 5 deletions

View File

@ -143,12 +143,20 @@ class Helper(
} }
val (modVerCfgErrors, moduleVersionConfigs) = Parse.moduleVersionConfigs(rawDependencies) val (modVerCfgErrors, moduleVersionConfigs) =
Parse.moduleVersionConfigs(rawDependencies)
val (intransitiveModVerCfgErrors, intransitiveModuleVersionConfigs) =
Parse.moduleVersionConfigs(intransitive)
prematureExitIf(modVerCfgErrors.nonEmpty) { prematureExitIf(modVerCfgErrors.nonEmpty) {
s"Cannot parse dependencies:\n" + modVerCfgErrors.map(" "+_).mkString("\n") s"Cannot parse dependencies:\n" + modVerCfgErrors.map(" "+_).mkString("\n")
} }
prematureExitIf(intransitiveModVerCfgErrors.nonEmpty) {
s"Cannot parse intransitive dependencies:\n" +
intransitiveModVerCfgErrors.map(" "+_).mkString("\n")
}
val (forceVersionErrors, forceVersions0) = Parse.moduleVersions(forceVersion) val (forceVersionErrors, forceVersions0) = Parse.moduleVersions(forceVersion)
@ -217,17 +225,29 @@ class Helper(
(mod.organization, mod.name) (mod.organization, mod.name)
}.toSet }.toSet
val dependencies = moduleVersionConfigs.map { val baseDependencies = moduleVersionConfigs.map {
case (module, version, configOpt) =>
Dependency(
module,
version,
configuration = configOpt.getOrElse(defaultConfiguration),
exclusions = excludes
)
}
val intransitiveDependencies = intransitiveModuleVersionConfigs.map {
case (module, version, configOpt) => case (module, version, configOpt) =>
Dependency( Dependency(
module, module,
version, version,
configuration = configOpt.getOrElse(defaultConfiguration), configuration = configOpt.getOrElse(defaultConfiguration),
exclusions = excludes, exclusions = excludes,
transitive = !intransitive transitive = false
) )
} }
val dependencies = baseDependencies ++ intransitiveDependencies
val checksums = { val checksums = {
val splitChecksumArgs = checksum.flatMap(_.split(',')).filter(_.nonEmpty) val splitChecksumArgs = checksum.flatMap(_.split(',')).filter(_.nonEmpty)
if (splitChecksumArgs.isEmpty) if (splitChecksumArgs.isEmpty)

View File

@ -44,8 +44,8 @@ case class CommonOptions(
@Value("organization:name") @Value("organization:name")
@Short("E") @Short("E")
exclude: List[String], exclude: List[String],
@Help("Consider provided dependencies to be intransitive. Applies to all the provided dependencies.") @Help("Add intransitive dependencies")
intransitive: Boolean, intransitive: List[String],
@Help("Classifiers that should be fetched") @Help("Classifiers that should be fetched")
@Value("classifier1,classifier2,...") @Value("classifier1,classifier2,...")
@Short("C") @Short("C")