UNPKG

projen

Version:

CDK for software projects

53 lines • 9.54 kB
"use strict"; 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 { static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.LicenseChecker", version: "0.104.8" }; task; constructor(scope, options) { const taskName = options.taskName ?? "check-licenses"; super(scope, `LicenseChecker#${taskName}`); const { production = true, development = false, allow: allowedLicenses = [], deny: prohibitedLicenses = [], excludePrivatePackages = true, } = 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(";")); } if (excludePrivatePackages) { cmd.push("--excludePrivatePackages"); } this.project.deps.addDependency("license-checker", dependencies_1.DependencyType.BUILD); this.task = this.project.addTask(taskName, { execArgs: cmd, receiveArgs: true, }); this.project.preCompileTask.spawn(this.task); } } exports.LicenseChecker = LicenseChecker; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS1jaGVja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvbGljZW5zZS1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSw0Q0FBeUM7QUFDekMsa0RBQWlEO0FBd0RqRDs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLHFCQUFTOztJQUMzQixJQUFJLENBQU87SUFFM0IsWUFBbUIsS0FBZ0IsRUFBRSxPQUE4QjtRQUNqRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLGdCQUFnQixDQUFDO1FBQ3RELEtBQUssQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFM0MsTUFBTSxFQUNKLFVBQVUsR0FBRyxJQUFJLEVBQ2pCLFdBQVcsR0FBRyxLQUFLLEVBQ25CLEtBQUssRUFBRSxlQUFlLEdBQUcsRUFBRSxFQUMzQixJQUFJLEVBQUUsa0JBQWtCLEdBQUcsRUFBRSxFQUM3QixzQkFBc0IsR0FBRyxJQUFJLEdBQzlCLEdBQUcsT0FBTyxDQUFDO1FBRVosSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLENBQ2pGLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxRCxNQUFNLElBQUksS0FBSyxDQUNiLCtGQUErRixDQUNoRyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RCxNQUFNLElBQUksS0FBSyxDQUNiLCtGQUErRixDQUNoRyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFN0MsSUFBSSxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLFdBQVcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQy9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsNkJBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN6QyxRQUFRLEVBQUUsR0FBRztZQUNiLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7QUF6REgsd0NBMERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tIFwiLi4vdGFza1wiO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBsaWNlbnNlIGNoZWNrZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWNlbnNlQ2hlY2tlck9wdGlvbnMge1xuICAvKipcbiAgICogQ2hlY2sgcHJvZHVjdGlvbiBkZXBlbmRlbmNpZXMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHByb2R1Y3Rpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVjayBkZXZlbG9wbWVudCBkZXBlbmRlbmNpZXMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkZXZlbG9wbWVudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogRm9yIHRoZSBsaWNlbnNlIGNoZWNrIHRvIHBhc3MsIGFsbCBkZXRlY3RlZCBsaWNlbnNlcyBNVVNUIGJlIGluIHRoaXMgbGlzdC5cbiAgICogT25seSBvbmUgb2YgYGFsbG93ZWRMaWNlbnNlc2AgYW5kIGBwcm9oaWJpdGVkTGljZW5zZXNgIGNhbiBiZSBwcm92aWRlZCBhbmQgbXVzdCBub3QgYmUgZW1wdHkuXG4gICAqIEBkZWZhdWx0IC0gbm8gbGljZW5zZXMgYXJlIGFsbG93ZWRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzIHRoYXQgYXJlIHByb2hpYml0ZWQgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogRm9yIHRoZSBsaWNlbnNlIGNoZWNrIHRvIHBhc3MsIG5vIGRldGVjdGVkIGxpY2Vuc2VzIGNhbiBiZSBpbiB0aGlzIGxpc3QuXG4gICAqIE9ubHkgb25lIG9mIGBhbGxvd2VkTGljZW5zZXNgIGFuZCBgcHJvaGliaXRlZExpY2Vuc2VzYCBjYW4gYmUgcHJvdmlkZWQgYW5kIG11c3Qgbm90IGJlIGVtcHR5LlxuICAgKiBAZGVmYXVsdCAtIG5vIGxpY2Vuc2VzIGFyZSBwcm9oaWJpdGVkXG4gICAqL1xuICByZWFkb25seSBkZW55Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGUgcGFja2FnZXMgbWFya2VkIGFzIHByaXZhdGUgZnJvbSB0aGUgY2hlY2suXG4gICAqXG4gICAqIFByaXZhdGUgcGFja2FnZXMgYXJlIGxvY2FsIHRvIHRoZSByZXBvc2l0b3J5IGFuZCBub3QgcHVibGlzaGVkLCBzbyB0aGVpclxuICAgKiBsaWNlbnNlcyB0eXBpY2FsbHkgZG9uJ3QgbmVlZCB0byBiZSBjaGVja2VkLiBUaGlzIGFsc28gYXBwbGllcyB0byB0aGUgcHJvamVjdFxuICAgKiBpdHNlbGYuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVQcml2YXRlUGFja2FnZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFzayB0aGF0IGlzIGFkZGVkIHRvIGNoZWNrIGxpY2Vuc2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2hlY2stbGljZW5zZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGFza05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5mb3JjZXMgYWxsb3dlZCBsaWNlbnNlcyB1c2VkIGJ5IGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNsYXNzIExpY2Vuc2VDaGVja2VyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IHRhc2s6IFRhc2s7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIG9wdGlvbnM6IExpY2Vuc2VDaGVja2VyT3B0aW9ucykge1xuICAgIGNvbnN0IHRhc2tOYW1lID0gb3B0aW9ucy50YXNrTmFtZSA/PyBcImNoZWNrLWxpY2Vuc2VzXCI7XG4gICAgc3VwZXIoc2NvcGUsIGBMaWNlbnNlQ2hlY2tlciMke3Rhc2tOYW1lfWApO1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdGlvbiA9IHRydWUsXG4gICAgICBkZXZlbG9wbWVudCA9IGZhbHNlLFxuICAgICAgYWxsb3c6IGFsbG93ZWRMaWNlbnNlcyA9IFtdLFxuICAgICAgZGVueTogcHJvaGliaXRlZExpY2Vuc2VzID0gW10sXG4gICAgICBleGNsdWRlUHJpdmF0ZVBhY2thZ2VzID0gdHJ1ZSxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGlmICghcHJvZHVjdGlvbiAmJiAhZGV2ZWxvcG1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJMaWNlbnNlQ2hlY2tlcjogQXQgbGVhc3Qgb25lIG9mIGBwcm9kdWN0aW9uYCBvciBgZGV2ZWxvcG1lbnRgIG11c3QgYmUgZW5hYmxlZC5cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghYWxsb3dlZExpY2Vuc2VzLmxlbmd0aCAmJiAhcHJvaGliaXRlZExpY2Vuc2VzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkxpY2Vuc2VDaGVja2VyOiBOZWl0aGVyIGBhbGxvd2Agbm9yIGBkZW55YCBmb3VuZC4gRXhhY3RseSBvbmUgbXVzdCBiZSBwcm92aWRlZCBhbmQgbm90IGVtcHR5LlwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGFsbG93ZWRMaWNlbnNlcy5sZW5ndGggJiYgcHJvaGliaXRlZExpY2Vuc2VzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkxpY2Vuc2VDaGVja2VyOiBgYWxsb3dgIGFuZCBgZGVueWAgY2FuIG5vdCBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuIENob29zZSBvbmUgb3IgdGhlIG90aGVyLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbWQgPSBbXCJsaWNlbnNlLWNoZWNrZXJcIiwgXCItLXN1bW1hcnlcIl07XG5cbiAgICBpZiAocHJvZHVjdGlvbiAmJiAhZGV2ZWxvcG1lbnQpIHtcbiAgICAgIGNtZC5wdXNoKFwiLS1wcm9kdWN0aW9uXCIpO1xuICAgIH1cbiAgICBpZiAoZGV2ZWxvcG1lbnQgJiYgIXByb2R1Y3Rpb24pIHtcbiAgICAgIGNtZC5wdXNoKFwiLS1kZXZlbG9wbWVudFwiKTtcbiAgICB9XG4gICAgaWYgKGFsbG93ZWRMaWNlbnNlcy5sZW5ndGgpIHtcbiAgICAgIGNtZC5wdXNoKFwiLS1vbmx5QWxsb3dcIik7XG4gICAgICBjbWQucHVzaChhbGxvd2VkTGljZW5zZXMuam9pbihcIjtcIikpO1xuICAgIH1cbiAgICBpZiAocHJvaGliaXRlZExpY2Vuc2VzLmxlbmd0aCkge1xuICAgICAgY21kLnB1c2goXCItLWZhaWxPblwiKTtcbiAgICAgIGNtZC5wdXNoKHByb2hpYml0ZWRMaWNlbnNlcy5qb2luKFwiO1wiKSk7XG4gICAgfVxuICAgIGlmIChleGNsdWRlUHJpdmF0ZVBhY2thZ2VzKSB7XG4gICAgICBjbWQucHVzaChcIi0tZXhjbHVkZVByaXZhdGVQYWNrYWdlc1wiKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KFwibGljZW5zZS1jaGVja2VyXCIsIERlcGVuZGVuY3lUeXBlLkJVSUxEKTtcbiAgICB0aGlzLnRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayh0YXNrTmFtZSwge1xuICAgICAgZXhlY0FyZ3M6IGNtZCxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJvamVjdC5wcmVDb21waWxlVGFzay5zcGF3bih0aGlzLnRhc2spO1xuICB9XG59XG4iXX0=