projen
Version:
CDK for software projects
51 lines • 8.77 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LicenseChecker = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const component_1 = require("../component");
const dependencies_1 = require("../dependencies");
/**
* Enforces allowed licenses used by dependencies.
*/
class LicenseChecker extends component_1.Component {
constructor(scope, options) {
const taskName = options.taskName ?? "check-licenses";
super(scope, `LicenseChecker#${taskName}`);
const { production = true, development = false, allow: allowedLicenses = [], deny: prohibitedLicenses = [], } = options;
if (!production && !development) {
throw new Error("LicenseChecker: At least one of `production` or `development` must be enabled.");
}
if (!allowedLicenses.length && !prohibitedLicenses.length) {
throw new Error("LicenseChecker: Neither `allow` nor `deny` found. Exactly one must be provided and not empty.");
}
if (allowedLicenses.length && prohibitedLicenses.length) {
throw new Error("LicenseChecker: `allow` and `deny` can not be used at the same time. Choose one or the other.");
}
const cmd = ["license-checker", "--summary"];
if (production && !development) {
cmd.push("--production");
}
if (development && !production) {
cmd.push("--development");
}
if (allowedLicenses.length) {
cmd.push("--onlyAllow");
cmd.push(`"${allowedLicenses.join(";")}"`);
}
if (prohibitedLicenses.length) {
cmd.push("--failOn");
cmd.push(`"${prohibitedLicenses.join(";")}"`);
}
this.project.deps.addDependency("license-checker", dependencies_1.DependencyType.BUILD);
this.task = this.project.addTask(taskName, {
exec: cmd.join(" "),
receiveArgs: true,
});
this.project.preCompileTask.spawn(this.task);
}
}
exports.LicenseChecker = LicenseChecker;
_a = JSII_RTTI_SYMBOL_1;
LicenseChecker[_a] = { fqn: "projen.javascript.LicenseChecker", version: "0.99.51" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS1jaGVja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvbGljZW5zZS1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsNENBQXlDO0FBQ3pDLGtEQUFpRDtBQTZDakQ7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxxQkFBUztJQUczQyxZQUFtQixLQUFnQixFQUFFLE9BQThCO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksZ0JBQWdCLENBQUM7UUFDdEQsS0FBSyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUzQyxNQUFNLEVBQ0osVUFBVSxHQUFHLElBQUksRUFDakIsV0FBVyxHQUFHLEtBQUssRUFDbkIsS0FBSyxFQUFFLGVBQWUsR0FBRyxFQUFFLEVBQzNCLElBQUksRUFBRSxrQkFBa0IsR0FBRyxFQUFFLEdBQzlCLEdBQUcsT0FBTyxDQUFDO1FBRVosSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLENBQ2pGLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxRCxNQUFNLElBQUksS0FBSyxDQUNiLCtGQUErRixDQUNoRyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RCxNQUFNLElBQUksS0FBSyxDQUNiLCtGQUErRixDQUNoRyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFN0MsSUFBSSxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLFdBQVcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQy9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSw2QkFBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNuQixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBckRILHdDQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcblxuLyoqXG4gKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgbGljZW5zZSBjaGVja2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGljZW5zZUNoZWNrZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIENoZWNrIHByb2R1Y3Rpb24gZGVwZW5kZW5jaWVzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgZGV2ZWxvcG1lbnQgZGVwZW5kZW5jaWVzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGV2ZWxvcG1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFNQRFggbGljZW5zZSBpZGVudGlmaWVycyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQuXG4gICAqXG4gICAqIEZvciB0aGUgbGljZW5zZSBjaGVjayB0byBwYXNzLCBhbGwgZGV0ZWN0ZWQgbGljZW5zZXMgTVVTVCBiZSBpbiB0aGlzIGxpc3QuXG4gICAqIE9ubHkgb25lIG9mIGBhbGxvd2VkTGljZW5zZXNgIGFuZCBgcHJvaGliaXRlZExpY2Vuc2VzYCBjYW4gYmUgcHJvdmlkZWQgYW5kIG11c3Qgbm90IGJlIGVtcHR5LlxuICAgKiBAZGVmYXVsdCAtIG5vIGxpY2Vuc2VzIGFyZSBhbGxvd2VkXG4gICAqL1xuICByZWFkb25seSBhbGxvdz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFNQRFggbGljZW5zZSBpZGVudGlmaWVycyB0aGF0IGFyZSBwcm9oaWJpdGVkIHRvIGJlIHVzZWQuXG4gICAqXG4gICAqIEZvciB0aGUgbGljZW5zZSBjaGVjayB0byBwYXNzLCBubyBkZXRlY3RlZCBsaWNlbnNlcyBjYW4gYmUgaW4gdGhpcyBsaXN0LlxuICAgKiBPbmx5IG9uZSBvZiBgYWxsb3dlZExpY2Vuc2VzYCBhbmQgYHByb2hpYml0ZWRMaWNlbnNlc2AgY2FuIGJlIHByb3ZpZGVkIGFuZCBtdXN0IG5vdCBiZSBlbXB0eS5cbiAgICogQGRlZmF1bHQgLSBubyBsaWNlbnNlcyBhcmUgcHJvaGliaXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZGVueT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFzayB0aGF0IGlzIGFkZGVkIHRvIGNoZWNrIGxpY2Vuc2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2hlY2stbGljZW5zZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGFza05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5mb3JjZXMgYWxsb3dlZCBsaWNlbnNlcyB1c2VkIGJ5IGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNsYXNzIExpY2Vuc2VDaGVja2VyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IHRhc2s6IFRhc2s7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIG9wdGlvbnM6IExpY2Vuc2VDaGVja2VyT3B0aW9ucykge1xuICAgIGNvbnN0IHRhc2tOYW1lID0gb3B0aW9ucy50YXNrTmFtZSA/PyBcImNoZWNrLWxpY2Vuc2VzXCI7XG4gICAgc3VwZXIoc2NvcGUsIGBMaWNlbnNlQ2hlY2tlciMke3Rhc2tOYW1lfWApO1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdGlvbiA9IHRydWUsXG4gICAgICBkZXZlbG9wbWVudCA9IGZhbHNlLFxuICAgICAgYWxsb3c6IGFsbG93ZWRMaWNlbnNlcyA9IFtdLFxuICAgICAgZGVueTogcHJvaGliaXRlZExpY2Vuc2VzID0gW10sXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIXByb2R1Y3Rpb24gJiYgIWRldmVsb3BtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiTGljZW5zZUNoZWNrZXI6IEF0IGxlYXN0IG9uZSBvZiBgcHJvZHVjdGlvbmAgb3IgYGRldmVsb3BtZW50YCBtdXN0IGJlIGVuYWJsZWQuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWFsbG93ZWRMaWNlbnNlcy5sZW5ndGggJiYgIXByb2hpYml0ZWRMaWNlbnNlcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJMaWNlbnNlQ2hlY2tlcjogTmVpdGhlciBgYWxsb3dgIG5vciBgZGVueWAgZm91bmQuIEV4YWN0bHkgb25lIG11c3QgYmUgcHJvdmlkZWQgYW5kIG5vdCBlbXB0eS5cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChhbGxvd2VkTGljZW5zZXMubGVuZ3RoICYmIHByb2hpYml0ZWRMaWNlbnNlcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJMaWNlbnNlQ2hlY2tlcjogYGFsbG93YCBhbmQgYGRlbnlgIGNhbiBub3QgYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lLiBDaG9vc2Ugb25lIG9yIHRoZSBvdGhlci5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY21kID0gW1wibGljZW5zZS1jaGVja2VyXCIsIFwiLS1zdW1tYXJ5XCJdO1xuXG4gICAgaWYgKHByb2R1Y3Rpb24gJiYgIWRldmVsb3BtZW50KSB7XG4gICAgICBjbWQucHVzaChcIi0tcHJvZHVjdGlvblwiKTtcbiAgICB9XG4gICAgaWYgKGRldmVsb3BtZW50ICYmICFwcm9kdWN0aW9uKSB7XG4gICAgICBjbWQucHVzaChcIi0tZGV2ZWxvcG1lbnRcIik7XG4gICAgfVxuICAgIGlmIChhbGxvd2VkTGljZW5zZXMubGVuZ3RoKSB7XG4gICAgICBjbWQucHVzaChcIi0tb25seUFsbG93XCIpO1xuICAgICAgY21kLnB1c2goYFwiJHthbGxvd2VkTGljZW5zZXMuam9pbihcIjtcIil9XCJgKTtcbiAgICB9XG4gICAgaWYgKHByb2hpYml0ZWRMaWNlbnNlcy5sZW5ndGgpIHtcbiAgICAgIGNtZC5wdXNoKFwiLS1mYWlsT25cIik7XG4gICAgICBjbWQucHVzaChgXCIke3Byb2hpYml0ZWRMaWNlbnNlcy5qb2luKFwiO1wiKX1cImApO1xuICAgIH1cblxuICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koXCJsaWNlbnNlLWNoZWNrZXJcIiwgRGVwZW5kZW5jeVR5cGUuQlVJTEQpO1xuICAgIHRoaXMudGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKHRhc2tOYW1lLCB7XG4gICAgICBleGVjOiBjbWQuam9pbihcIiBcIiksXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnByb2plY3QucHJlQ29tcGlsZVRhc2suc3Bhd24odGhpcy50YXNrKTtcbiAgfVxufVxuIl19