Skip to content

Commit 1424156

Browse files
committed
fix: allow missing go env vars
Signed-off-by: Ruben Romero Montes <rromerom@redhat.com>
1 parent c230c83 commit 1424156

1 file changed

Lines changed: 26 additions & 6 deletions

File tree

src/main/java/com/redhat/exhort/providers/GoModulesProvider.java

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.util.List;
4141
import java.util.Map;
4242
import java.util.Objects;
43+
import java.util.Optional;
4344
import java.util.TreeMap;
4445
import java.util.logging.Logger;
4546
import java.util.regex.Pattern;
@@ -381,23 +382,42 @@ private static List<String> collectAllDirectDependencies(List<String> targetLine
381382
private TreeMap<String, String> getQualifiers(boolean includeOsAndArch) {
382383
if (includeOsAndArch) {
383384
String goEnvironmentVariables = Operations.runProcessGetOutput(null, goExecutable, "env");
384-
String hostArch =
385+
var qualifiers = new TreeMap<String, String>();
386+
qualifiers.put("type", "module");
387+
Optional<String> hostArch =
385388
getEnvironmentVariable(goEnvironmentVariables, GO_HOST_ARCHITECTURE_ENV_NAME);
386-
String hostOS =
389+
Optional<String> hostOS =
387390
getEnvironmentVariable(goEnvironmentVariables, GO_HOST_OPERATION_SYSTEM_ENV_NAME);
388-
return new TreeMap<>(Map.of("type", "module", "goos", hostOS, "goarch", hostArch));
391+
if (hostArch.isPresent()) {
392+
qualifiers.put("goarch", hostArch.get());
393+
}
394+
if (hostOS.isPresent()) {
395+
qualifiers.put("goos", hostOS.get());
396+
}
397+
return qualifiers;
389398
}
390399

391400
return new TreeMap<>(Map.of("type", "module"));
392401
}
393402

394-
private static String getEnvironmentVariable(String goEnvironmentVariables, String envName) {
403+
private static Optional<String> getEnvironmentVariable(
404+
String goEnvironmentVariables, String envName) {
395405
int i = goEnvironmentVariables.indexOf(String.format("%s=", envName));
406+
if (i == -1) {
407+
return Optional.empty();
408+
}
396409
int beginIndex = i + String.format("%s=", envName).length();
397410
int endOfLineIndex =
398411
goEnvironmentVariables.substring(beginIndex).indexOf(System.lineSeparator());
399-
String envValue = goEnvironmentVariables.substring(beginIndex).substring(0, endOfLineIndex);
400-
return envValue.replaceAll("\"", "");
412+
413+
String envValue;
414+
if (endOfLineIndex == -1) {
415+
envValue = goEnvironmentVariables.substring(beginIndex);
416+
} else {
417+
envValue = goEnvironmentVariables.substring(beginIndex).substring(0, endOfLineIndex);
418+
}
419+
420+
return Optional.of(envValue.replaceAll("\"", ""));
401421
}
402422

403423
private String buildGoModulesDependencies(Path manifestPath) {

0 commit comments

Comments
 (0)