Skip to content

Commit 0ea8fee

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

1 file changed

Lines changed: 20 additions & 13 deletions

File tree

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

Lines changed: 20 additions & 13 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;
@@ -69,7 +70,7 @@ public String getMainModuleVersion() {
6970
public GoModulesProvider(Path manifest) {
7071
super(Type.GOLANG, manifest);
7172
this.goExecutable = Operations.getExecutable(GO_BINARY, "version");
72-
this.goEnvironmentVariableForPurl = getQualifiers(true);
73+
this.goEnvironmentVariableForPurl = getQualifiers();
7374
this.mainModuleVersion = getDefaultMainModuleVersion();
7475
}
7576

@@ -379,26 +380,32 @@ private static List<String> collectAllDirectDependencies(List<String> targetLine
379380
.collect(Collectors.toList());
380381
}
381382

382-
private TreeMap<String, String> getQualifiers(boolean includeOsAndArch) {
383-
if (includeOsAndArch) {
384-
String goEnvironmentVariables = Operations.runProcessGetOutput(null, goExecutable, "env");
385-
String hostArch =
386-
getEnvironmentVariable(goEnvironmentVariables, GO_HOST_ARCHITECTURE_ENV_NAME);
387-
String hostOS =
388-
getEnvironmentVariable(goEnvironmentVariables, GO_HOST_OPERATION_SYSTEM_ENV_NAME);
389-
return new TreeMap<>(Map.of("type", "module", "goos", hostOS, "goarch", hostArch));
383+
private TreeMap<String, String> getQualifiers() {
384+
String goEnvironmentVariables = Operations.runProcessGetOutput(null, goExecutable, "env");
385+
var hostArch = getEnvironmentVariable(goEnvironmentVariables, GO_HOST_ARCHITECTURE_ENV_NAME);
386+
var hostOS = getEnvironmentVariable(goEnvironmentVariables, GO_HOST_OPERATION_SYSTEM_ENV_NAME);
387+
var qualifiers = new TreeMap<String, String>();
388+
qualifiers.put("type", "module");
389+
if (hostOS.isPresent()) {
390+
qualifiers.put("goos", hostOS.get());
390391
}
391-
392-
return new TreeMap<>(Map.of("type", "module"));
392+
if (hostArch.isPresent()) {
393+
qualifiers.put("goarch", hostArch.get());
394+
}
395+
return qualifiers;
393396
}
394397

395-
private static String getEnvironmentVariable(String goEnvironmentVariables, String envName) {
398+
private static Optional<String> getEnvironmentVariable(
399+
String goEnvironmentVariables, String envName) {
396400
int i = goEnvironmentVariables.indexOf(String.format("%s=", envName));
401+
if (i == -1) {
402+
return Optional.empty();
403+
}
397404
int beginIndex = i + String.format("%s=", envName).length();
398405
int endOfLineIndex =
399406
goEnvironmentVariables.substring(beginIndex).indexOf(System.lineSeparator());
400407
String envValue = goEnvironmentVariables.substring(beginIndex).substring(0, endOfLineIndex);
401-
return envValue.replaceAll("\"", "");
408+
return Optional.of(envValue.replaceAll("\"", ""));
402409
}
403410

404411
private String buildGoModulesDependencies(Path manifestPath) {

0 commit comments

Comments
 (0)