private String runSbomgen()

in src/main/java/com/amazon/inspector/jenkins/amazoninspectorbuildstep/sbomgen/SbomgenRunner.java [48:103]


    private String runSbomgen(String sbomgenPath, String archivePath) throws Exception {
        FilePath sbomgenFilePath = new FilePath(new File(sbomgenPath));

        if (!isValidPath(sbomgenFilePath.getRemote())) {
            throw new IllegalArgumentException("Invalid sbomgen path: " + sbomgenPath);
        }

        Map<String, String> environment = new HashMap<>();
        if (dockerPassword != null && !dockerPassword.isEmpty()) {
            environment.put("INSPECTOR_SBOMGEN_USERNAME", dockerUsername);
            environment.put("INSPECTOR_SBOMGEN_PASSWORD", dockerPassword);
        }

        AmazonInspectorBuilder.logger.println("Making downloaded SBOMGen executable...");
        SbomgenUtils.runCommand(new String[]{"chmod", "+x", sbomgenFilePath.getRemote()},
                launcher, environment);

        AmazonInspectorBuilder.logger.println("Running command...");
        String option = "--image";
        if (!archiveType.equals("container")) {
            option = "--path";
        }

        String[] baseCommandList = new String[] {
                sbomgenFilePath.getRemote(),
                archiveType,
                option,
                archivePath
        };

        AmazonInspectorBuilder.logger.println(Arrays.toString(baseCommandList));

        if (sbomgenSkipFiles != null && !sbomgenSkipFiles.trim().isEmpty()) {
            String[] patterns = sbomgenSkipFiles.split("\\r?\\n");
            List<String> validPatterns = Arrays.stream(patterns)
                    .map(String::trim)
                    .filter(p -> !p.isEmpty())
                    .collect(Collectors.toList());

            if (!validPatterns.isEmpty()) {
                String skipFilesJoined = String.join(",", validPatterns);
                String[] extendedCommandList = Arrays.copyOf(baseCommandList,
                        baseCommandList.length + 2);
                extendedCommandList[extendedCommandList.length - 2] = "--skip-files";
                extendedCommandList[extendedCommandList.length - 1] = skipFilesJoined;
                baseCommandList = extendedCommandList;

                AmazonInspectorBuilder.logger.println("DEBUG: --skip-files argument: " +
                        skipFilesJoined);
                AmazonInspectorBuilder.logger.println(Arrays.toString(baseCommandList));
            }
        }

        String output = SbomgenUtils.runCommand(baseCommandList, launcher, environment);
        return SbomgenUtils.processSbomgenOutput(output);
    }