Skip to content

Commit 9027861

Browse files
Merge pull request #82 from purkhusid/fix-generated-files
Fix detection of generated files
2 parents bd6d902 + be136eb commit 9027861

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed

src/main/java/com/bazel_diff/BazelTarget.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ interface BazelTarget {
77
BazelRule getRule();
88
boolean hasSourceFile();
99
String getSourceFileName();
10+
boolean hasGeneratedFile();
11+
String getGeneratedFileName();
12+
String getGeneratingRuleName();
1013
}
1114

1215
class BazelTargetImpl implements BazelTarget {
@@ -41,5 +44,26 @@ public String getSourceFileName() {
4144
}
4245
return null;
4346
}
47+
48+
@Override
49+
public boolean hasGeneratedFile() {
50+
return target.hasGeneratedFile();
51+
}
52+
53+
@Override
54+
public String getGeneratedFileName() {
55+
if (this.hasGeneratedFile()) {
56+
return this.target.getGeneratedFile().getName();
57+
}
58+
return null;
59+
}
60+
61+
@Override
62+
public String getGeneratingRuleName() {
63+
if (this.hasGeneratedFile()) {
64+
return this.target.getGeneratedFile().getGeneratingRule();
65+
}
66+
return null;
67+
}
4468
}
4569

src/main/java/com/bazel_diff/TargetHashingClient.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ private byte[] createDigestForTarget(
5151
Map<String, byte[]> ruleHashes,
5252
byte[] seedHash
5353
) throws NoSuchAlgorithmException {
54-
BazelRule targetRule = target.getRule();
5554
if (target.hasSourceFile()) {
5655
String sourceFileName = getNameForTarget(target);
5756
if (sourceFileName != null) {
@@ -66,6 +65,14 @@ private byte[] createDigestForTarget(
6665
return digest.digest().clone();
6766
}
6867
}
68+
if (target.hasGeneratedFile()){
69+
byte[] generatingRuleDigest = ruleHashes.get(target.getGeneratingRuleName());
70+
if (generatingRuleDigest == null) {
71+
return createDigestForRule(allRulesMap.get(target.getGeneratingRuleName()), allRulesMap, ruleHashes, bazelSourcefileTargets, seedHash);
72+
}
73+
return ruleHashes.get(target.getGeneratingRuleName()).clone();
74+
}
75+
BazelRule targetRule = target.getRule();
6976
return createDigestForRule(targetRule, allRulesMap, ruleHashes, bazelSourcefileTargets, seedHash);
7077
}
7178

@@ -143,6 +150,9 @@ private String getNameForTarget(BazelTarget target) {
143150
if (target.hasSourceFile()) {
144151
return target.getSourceFileName();
145152
}
153+
if (target.hasGeneratedFile()) {
154+
return target.getGeneratedFileName();
155+
}
146156
return null;
147157
}
148158

@@ -153,10 +163,15 @@ private Map<String, String> hashAllTargets(byte[] seedHash, Map<String, BazelSou
153163
Map<String, BazelRule> allRulesMap = new HashMap<>();
154164
for (BazelTarget target : allTargets) {
155165
String targetName = getNameForTarget(target);
156-
if (targetName == null || !target.hasRule()) {
166+
if (targetName == null) {
157167
continue;
158168
}
159-
allRulesMap.put(targetName, target.getRule());
169+
if(target.hasGeneratedFile()) {
170+
allRulesMap.put(targetName, allRulesMap.get(target.getGeneratingRuleName()));
171+
}
172+
if(target.hasRule()) {
173+
allRulesMap.put(targetName, target.getRule());
174+
}
160175
}
161176
for (BazelTarget target : allTargets) {
162177
String targetName = getNameForTarget(target);

0 commit comments

Comments
 (0)