|
40 | 40 | import java.util.List; |
41 | 41 | import java.util.Map; |
42 | 42 | import java.util.Objects; |
| 43 | +import java.util.Optional; |
43 | 44 | import java.util.TreeMap; |
44 | 45 | import java.util.logging.Logger; |
45 | 46 | import java.util.regex.Pattern; |
@@ -69,7 +70,7 @@ public String getMainModuleVersion() { |
69 | 70 | public GoModulesProvider(Path manifest) { |
70 | 71 | super(Type.GOLANG, manifest); |
71 | 72 | this.goExecutable = Operations.getExecutable(GO_BINARY, "version"); |
72 | | - this.goEnvironmentVariableForPurl = getQualifiers(true); |
| 73 | + this.goEnvironmentVariableForPurl = getQualifiers(); |
73 | 74 | this.mainModuleVersion = getDefaultMainModuleVersion(); |
74 | 75 | } |
75 | 76 |
|
@@ -379,26 +380,32 @@ private static List<String> collectAllDirectDependencies(List<String> targetLine |
379 | 380 | .collect(Collectors.toList()); |
380 | 381 | } |
381 | 382 |
|
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()); |
390 | 391 | } |
391 | | - |
392 | | - return new TreeMap<>(Map.of("type", "module")); |
| 392 | + if (hostArch.isPresent()) { |
| 393 | + qualifiers.put("goarch", hostArch.get()); |
| 394 | + } |
| 395 | + return qualifiers; |
393 | 396 | } |
394 | 397 |
|
395 | | - private static String getEnvironmentVariable(String goEnvironmentVariables, String envName) { |
| 398 | + private static Optional<String> getEnvironmentVariable( |
| 399 | + String goEnvironmentVariables, String envName) { |
396 | 400 | int i = goEnvironmentVariables.indexOf(String.format("%s=", envName)); |
| 401 | + if (i == -1) { |
| 402 | + return Optional.empty(); |
| 403 | + } |
397 | 404 | int beginIndex = i + String.format("%s=", envName).length(); |
398 | 405 | int endOfLineIndex = |
399 | 406 | goEnvironmentVariables.substring(beginIndex).indexOf(System.lineSeparator()); |
400 | 407 | String envValue = goEnvironmentVariables.substring(beginIndex).substring(0, endOfLineIndex); |
401 | | - return envValue.replaceAll("\"", ""); |
| 408 | + return Optional.of(envValue.replaceAll("\"", "")); |
402 | 409 | } |
403 | 410 |
|
404 | 411 | private String buildGoModulesDependencies(Path manifestPath) { |
|
0 commit comments