Search in sources :

Example 1 with PackageLock

use of com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLock in project hub-detect by blackducksoftware.

the class NpmLockfileParserTest method recreatePackageJsonFromLock.

private Optional<String> recreatePackageJsonFromLock(String lockFileText) {
    // These tests were written before we needed a package json.
    // So we replicate a package json with every package as root.
    PackageJson packageJson = new PackageJson();
    Gson gson = new Gson();
    PackageLock packageLock = gson.fromJson(lockFileText, PackageLock.class);
    packageLock.dependencies.forEach((key, value) -> packageJson.dependencies.put(key, key));
    String text = gson.toJson(packageJson);
    return Optional.of(text);
}
Also used : PackageLock(com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLock) Gson(com.google.gson.Gson) PackageJson(com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageJson)

Example 2 with PackageLock

use of com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLock in project hub-detect by blackducksoftware.

the class NpmLockfileParser method parse.

public NpmParseResult parse(final String sourcePath, final Optional<String> packageJsonText, final String lockFileText, final boolean includeDevDependencies) {
    final MutableDependencyGraph dependencyGraph = new MutableMapDependencyGraph();
    logger.info("Parsing lock file text: ");
    logger.debug(lockFileText);
    Optional<PackageJson> packageJson = Optional.empty();
    if (packageJsonText.isPresent()) {
        logger.debug(packageJsonText.get());
        packageJson = Optional.of(gson.fromJson(packageJsonText.get(), PackageJson.class));
    }
    final PackageLock packageLock = gson.fromJson(lockFileText, PackageLock.class);
    logger.debug(lockFileText);
    logger.info("Processing project.");
    if (packageLock.dependencies != null) {
        logger.info(String.format("Found %d dependencies.", packageLock.dependencies.size()));
        // Convert to our custom format
        NpmDependencyConverter dependencyConverter = new NpmDependencyConverter(externalIdFactory);
        NpmDependency rootDependency = dependencyConverter.convertLockFile(packageLock, packageJson);
        traverse(rootDependency, dependencyGraph, true, includeDevDependencies);
    } else {
        logger.info("Lock file did not have a 'dependencies' section.");
    }
    logger.info("Finished processing.");
    final ExternalId projectId = externalIdFactory.createNameVersionExternalId(Forge.NPM, packageLock.name, packageLock.version);
    final DetectCodeLocation codeLocation = new DetectCodeLocation.Builder(DetectCodeLocationType.NPM, sourcePath, projectId, dependencyGraph).build();
    return new NpmParseResult(packageLock.name, packageLock.version, codeLocation);
}
Also used : MutableDependencyGraph(com.synopsys.integration.bdio.graph.MutableDependencyGraph) PackageLock(com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLock) NpmDependency(com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency) DetectCodeLocation(com.blackducksoftware.integration.hub.detect.workflow.codelocation.DetectCodeLocation) ExternalId(com.synopsys.integration.bdio.model.externalid.ExternalId) MutableMapDependencyGraph(com.synopsys.integration.bdio.graph.MutableMapDependencyGraph) PackageJson(com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageJson)

Example 3 with PackageLock

use of com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLock in project hub-detect by blackducksoftware.

the class NpmDependencyConverter method convertLockFile.

public NpmDependency convertLockFile(PackageLock packageLock, Optional<PackageJson> packageJsonOptional) {
    NpmDependency root = createNpmDependency(packageLock.name, packageLock.version, false);
    if (packageLock.dependencies != null) {
        List<NpmDependency> children = convertPackageMapToDependencies(root, packageLock.dependencies);
        root.addAllDependencies(children);
    }
    if (packageJsonOptional.isPresent()) {
        PackageJson packageJson = packageJsonOptional.get();
        if (packageJson.dependencies != null) {
            List<NpmRequires> rootRequires = convertNameVersionMapToRequires(packageJson.dependencies);
            root.addAllRequires(rootRequires);
        }
        if (packageJson.devDependencies != null) {
            List<NpmRequires> rootDevRequires = convertNameVersionMapToRequires(packageJson.devDependencies);
            root.addAllRequires(rootDevRequires);
        }
    } else {
        if (packageLock.dependencies != null) {
            List<NpmRequires> requires = packageLock.dependencies.entrySet().stream().map(entry -> new NpmRequires(entry.getKey(), entry.getValue().version)).collect(Collectors.toList());
            root.addAllRequires(requires);
        }
    }
    return root;
}
Also used : NpmRequires(com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmRequires) NpmDependency(com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency) PackageJson(com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageJson) Forge(com.synopsys.integration.bdio.model.Forge) PackageLock(com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLock) ExternalIdFactory(com.synopsys.integration.bdio.model.externalid.ExternalIdFactory) Collectors(java.util.stream.Collectors) PackageLockDependency(com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLockDependency) ArrayList(java.util.ArrayList) List(java.util.List) Dependency(com.synopsys.integration.bdio.model.dependency.Dependency) Map(java.util.Map) Optional(java.util.Optional) ExternalId(com.synopsys.integration.bdio.model.externalid.ExternalId) Collections(java.util.Collections) NpmDependency(com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency) NpmRequires(com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmRequires) PackageJson(com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageJson)

Aggregations

PackageJson (com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageJson)3 PackageLock (com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLock)3 NpmDependency (com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency)2 ExternalId (com.synopsys.integration.bdio.model.externalid.ExternalId)2 NpmRequires (com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmRequires)1 PackageLockDependency (com.blackducksoftware.integration.hub.detect.detector.npm.model.PackageLockDependency)1 DetectCodeLocation (com.blackducksoftware.integration.hub.detect.workflow.codelocation.DetectCodeLocation)1 Gson (com.google.gson.Gson)1 MutableDependencyGraph (com.synopsys.integration.bdio.graph.MutableDependencyGraph)1 MutableMapDependencyGraph (com.synopsys.integration.bdio.graph.MutableMapDependencyGraph)1 Forge (com.synopsys.integration.bdio.model.Forge)1 Dependency (com.synopsys.integration.bdio.model.dependency.Dependency)1 ExternalIdFactory (com.synopsys.integration.bdio.model.externalid.ExternalIdFactory)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Collectors (java.util.stream.Collectors)1