Skip to content

Commit 82ac6e4

Browse files
authored
Allow the list of fine grained hashes to be defined by a file (#277)
* Allow the list of fine grained hashes to be defined by a file * Make the flags mutually exclusive
1 parent 4e72550 commit 82ac6e4

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

cli/src/main/kotlin/com/bazel_diff/cli/GenerateHashesCommand.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ class GenerateHashesCommand : Callable<Int> {
7878
)
7979
var fineGrainedHashExternalRepos: Set<String> = emptySet()
8080

81+
@CommandLine.Option(
82+
names = ["--fineGrainedHashExternalReposFile"],
83+
description =
84+
[
85+
"A text file containing a newline separated list of external repos. Similar to --fineGrainedHashExternalRepos but helps you avoid exceeding max arg length. Mutually exclusive with --fineGrainedHashExternalRepos."])
86+
var fineGrainedHashExternalReposFile: File? = null
87+
8188
@CommandLine.Option(
8289
names = ["--useCquery"],
8390
negatable = true,
@@ -192,6 +199,7 @@ class GenerateHashesCommand : Callable<Int> {
192199
keepGoing,
193200
depsMappingJSONPath != null,
194201
fineGrainedHashExternalRepos,
202+
fineGrainedHashExternalReposFile,
195203
excludeExternalTargets,
196204
),
197205
loggingModule(parent.verbose),

cli/src/main/kotlin/com/bazel_diff/di/Modules.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,19 @@ fun hasherModule(
3030
keepGoing: Boolean,
3131
trackDeps: Boolean,
3232
fineGrainedHashExternalRepos: Set<String>,
33+
fineGrainedHashExternalReposFile: File?,
3334
excludeExternalTargets: Boolean,
3435
): Module = module {
36+
if (fineGrainedHashExternalReposFile != null && fineGrainedHashExternalRepos.isNotEmpty()) {
37+
System.err.println("Error: fineGrainedHashExternalReposFile and fineGrainedHashExternalRepos are mutually exclusive - please provide only one of them")
38+
System.exit(1)
39+
}
40+
val updatedFineGrainedHashExternalRepos = fineGrainedHashExternalReposFile?.let { file ->
41+
file.readLines()
42+
.filter { it.isNotBlank() }
43+
.toSet()
44+
} ?: fineGrainedHashExternalRepos
45+
3546
val cmd: MutableList<String> =
3647
ArrayList<String>().apply {
3748
add(bazelPath.toString())
@@ -60,11 +71,11 @@ fun hasherModule(
6071
keepGoing,
6172
debug)
6273
}
63-
single { BazelClient(useCquery, fineGrainedHashExternalRepos, excludeExternalTargets) }
74+
single { BazelClient(useCquery, updatedFineGrainedHashExternalRepos, excludeExternalTargets) }
6475
single { BuildGraphHasher(get()) }
6576
single { TargetHasher() }
66-
single { RuleHasher(useCquery, trackDeps, fineGrainedHashExternalRepos) }
67-
single<SourceFileHasher> { SourceFileHasherImpl(fineGrainedHashExternalRepos) }
77+
single { RuleHasher(useCquery, trackDeps, updatedFineGrainedHashExternalRepos) }
78+
single<SourceFileHasher> { SourceFileHasherImpl(updatedFineGrainedHashExternalRepos) }
6879
single { ExternalRepoResolver(workingDirectory, bazelPath, outputPath) }
6980
single(named("working-directory")) { workingDirectory }
7081
single(named("output-base")) { outputPath }

0 commit comments

Comments
 (0)