@atomist/sdm
Version:
Atomist Software Delivery Machine SDK
56 lines • 2.4 kB
JavaScript
;
/*
* Copyright © 2020 Atomist, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasDependency = exports.hasDeclaredDependency = exports.IsMaven = void 0;
const PushTest_1 = require("../../../api/mapping/PushTest");
const findDependencies_1 = require("./inspection/findDependencies");
const fromPom_1 = require("./parse/fromPom");
const VersionedArtifact_1 = require("./VersionedArtifact");
/**
* Is this a Maven project
*/
exports.IsMaven = PushTest_1.predicatePushTest("Is Maven", p => p.hasFile("pom.xml"));
/**
* Does the project declare the given dependency?
* @return {PredicatePushTest}
*/
function hasDeclaredDependency(on) {
return PushTest_1.predicatePushTest(`hasDeclaredDep-${VersionedArtifact_1.coordinates(on)}`, async (p) => {
const deps = (await fromPom_1.findDeclaredDependencies(p)).dependencies;
return VersionedArtifact_1.dependencyFound(on, deps);
});
}
exports.hasDeclaredDependency = hasDeclaredDependency;
/**
* Does the project depend on the given artifact, even indirectly?
* @return {PredicatePushTest}
*/
function hasDependency(on) {
return PushTest_1.predicatePushTest(`hasDeclaredDep-${VersionedArtifact_1.coordinates(on)}`, async (p) => {
// Attempt an optimization: Look for it in the fast stuff first
const directDeps = (await fromPom_1.findDeclaredDependencies(p)).dependencies;
const direct = VersionedArtifact_1.dependencyFound(on, directDeps);
if (direct) {
return true;
}
// If we're still going, check transient dependencies
const deps = await findDependencies_1.findDependenciesFromEffectivePom(p);
return VersionedArtifact_1.dependencyFound(on, deps);
});
}
exports.hasDependency = hasDependency;
//# sourceMappingURL=pushTests.js.map