projen
Version:
CDK for software projects
84 lines • 8.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Pip = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const requirements_file_1 = require("./requirements-file");
const component_1 = require("../component");
const dependencies_1 = require("../dependencies");
/**
* Manages dependencies using a requirements.txt file and the pip CLI tool.
*/
class Pip extends component_1.Component {
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pip", version: "0.103.12" };
installCiTask;
constructor(project, _options = {}) {
super(project);
new requirements_file_1.RequirementsFile(project, "requirements.txt", {
packageProvider: new RuntimeDependencyProvider(project),
});
new requirements_file_1.RequirementsFile(project, "requirements-dev.txt", {
packageProvider: new DevDependencyProvider(project),
});
this.installCiTask = project.addTask("install", {
description: "Install and upgrade dependencies",
});
this.installCiTask.execArgs([
"python",
"-m",
"pip",
"install",
"--upgrade",
"pip",
]);
this.installCiTask.execArgs(["pip", "install", "-r", "requirements.txt"]);
this.installCiTask.execArgs([
"pip",
"install",
"-r",
"requirements-dev.txt",
]);
}
/**
* Adds a runtime dependency.
*
* @param spec Format `<module>@<semver>`
*/
addDependency(spec) {
this.project.deps.addDependency(spec, dependencies_1.DependencyType.RUNTIME);
}
/**
* Adds a dev dependency.
*
* @param spec Format `<module>@<semver>`
*/
addDevDependency(spec) {
this.project.deps.addDependency(spec, dependencies_1.DependencyType.DEVENV);
}
/**
* Installs dependencies (called during post-synthesis).
*/
installDependencies() {
this.project.logger.info("Installing dependencies...");
this.project.tasks.runTask(this.installCiTask.name);
}
}
exports.Pip = Pip;
class RuntimeDependencyProvider {
project;
constructor(project) {
this.project = project;
}
get packages() {
return this.project.deps.all.filter((dep) => dep.type === dependencies_1.DependencyType.RUNTIME);
}
}
class DevDependencyProvider {
project;
constructor(project) {
this.project = project;
}
get packages() {
return this.project.deps.all.filter((dep) => [dependencies_1.DependencyType.TEST, dependencies_1.DependencyType.DEVENV].includes(dep.type));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B5dGhvbi9waXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDJEQUF1RDtBQUN2RCw0Q0FBeUM7QUFFekMsa0RBQWlEO0FBU2pEOztHQUVHO0FBQ0gsTUFBYSxHQUFJLFNBQVEscUJBQVM7O0lBQ2hCLGFBQWEsQ0FBTztJQUVwQyxZQUFZLE9BQWdCLEVBQUUsV0FBdUIsRUFBRTtRQUNyRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJQUFJLG9DQUFnQixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRTtZQUNoRCxlQUFlLEVBQUUsSUFBSSx5QkFBeUIsQ0FBQyxPQUFPLENBQUM7U0FDeEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxvQ0FBZ0IsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUU7WUFDcEQsZUFBZSxFQUFFLElBQUkscUJBQXFCLENBQUMsT0FBTyxDQUFDO1NBQ3BELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDOUMsV0FBVyxFQUFFLGtDQUFrQztTQUNoRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztZQUMxQixRQUFRO1lBQ1IsSUFBSTtZQUNKLEtBQUs7WUFDTCxTQUFTO1lBQ1QsV0FBVztZQUNYLEtBQUs7U0FDTixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztZQUMxQixLQUFLO1lBQ0wsU0FBUztZQUNULElBQUk7WUFDSixzQkFBc0I7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLDZCQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsNkJBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7QUExREgsa0JBMkRDO0FBRUQsTUFBTSx5QkFBeUI7SUFDQTtJQUE3QixZQUE2QixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO0lBQUcsQ0FBQztJQUNqRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUNqQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyw2QkFBYyxDQUFDLE9BQU8sQ0FDN0MsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0scUJBQXFCO0lBQ0k7SUFBN0IsWUFBNkIsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUFHLENBQUM7SUFDakQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQzFDLENBQUMsNkJBQWMsQ0FBQyxJQUFJLEVBQUUsNkJBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNoRSxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJUGFja2FnZVByb3ZpZGVyLCBJUHl0aG9uRGVwcyB9IGZyb20gXCIuL3B5dGhvbi1kZXBzXCI7XG5pbXBvcnQgeyBSZXF1aXJlbWVudHNGaWxlIH0gZnJvbSBcIi4vcmVxdWlyZW1lbnRzLWZpbGVcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgRGVwZW5kZW5jeSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcGlwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwT3B0aW9ucyB7fVxuXG4vKipcbiAqIE1hbmFnZXMgZGVwZW5kZW5jaWVzIHVzaW5nIGEgcmVxdWlyZW1lbnRzLnR4dCBmaWxlIGFuZCB0aGUgcGlwIENMSSB0b29sLlxuICovXG5leHBvcnQgY2xhc3MgUGlwIGV4dGVuZHMgQ29tcG9uZW50IGltcGxlbWVudHMgSVB5dGhvbkRlcHMge1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFsbENpVGFzazogVGFzaztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBfb3B0aW9uczogUGlwT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBuZXcgUmVxdWlyZW1lbnRzRmlsZShwcm9qZWN0LCBcInJlcXVpcmVtZW50cy50eHRcIiwge1xuICAgICAgcGFja2FnZVByb3ZpZGVyOiBuZXcgUnVudGltZURlcGVuZGVuY3lQcm92aWRlcihwcm9qZWN0KSxcbiAgICB9KTtcbiAgICBuZXcgUmVxdWlyZW1lbnRzRmlsZShwcm9qZWN0LCBcInJlcXVpcmVtZW50cy1kZXYudHh0XCIsIHtcbiAgICAgIHBhY2thZ2VQcm92aWRlcjogbmV3IERldkRlcGVuZGVuY3lQcm92aWRlcihwcm9qZWN0KSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW5zdGFsbENpVGFzayA9IHByb2plY3QuYWRkVGFzayhcImluc3RhbGxcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiSW5zdGFsbCBhbmQgdXBncmFkZSBkZXBlbmRlbmNpZXNcIixcbiAgICB9KTtcbiAgICB0aGlzLmluc3RhbGxDaVRhc2suZXhlY0FyZ3MoW1xuICAgICAgXCJweXRob25cIixcbiAgICAgIFwiLW1cIixcbiAgICAgIFwicGlwXCIsXG4gICAgICBcImluc3RhbGxcIixcbiAgICAgIFwiLS11cGdyYWRlXCIsXG4gICAgICBcInBpcFwiLFxuICAgIF0pO1xuICAgIHRoaXMuaW5zdGFsbENpVGFzay5leGVjQXJncyhbXCJwaXBcIiwgXCJpbnN0YWxsXCIsIFwiLXJcIiwgXCJyZXF1aXJlbWVudHMudHh0XCJdKTtcbiAgICB0aGlzLmluc3RhbGxDaVRhc2suZXhlY0FyZ3MoW1xuICAgICAgXCJwaXBcIixcbiAgICAgIFwiaW5zdGFsbFwiLFxuICAgICAgXCItclwiLFxuICAgICAgXCJyZXF1aXJlbWVudHMtZGV2LnR4dFwiLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBydW50aW1lIGRlcGVuZGVuY3kuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIEZvcm1hdCBgPG1vZHVsZT5APHNlbXZlcj5gXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KHNwZWMsIERlcGVuZGVuY3lUeXBlLlJVTlRJTUUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBkZXYgZGVwZW5kZW5jeS5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgRm9ybWF0IGA8bW9kdWxlPkA8c2VtdmVyPmBcbiAgICovXG4gIHB1YmxpYyBhZGREZXZEZXBlbmRlbmN5KHNwZWM6IHN0cmluZykge1xuICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koc3BlYywgRGVwZW5kZW5jeVR5cGUuREVWRU5WKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyBkZXBlbmRlbmNpZXMgKGNhbGxlZCBkdXJpbmcgcG9zdC1zeW50aGVzaXMpLlxuICAgKi9cbiAgcHVibGljIGluc3RhbGxEZXBlbmRlbmNpZXMoKSB7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFwiSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cIik7XG5cbiAgICB0aGlzLnByb2plY3QudGFza3MucnVuVGFzayh0aGlzLmluc3RhbGxDaVRhc2submFtZSk7XG4gIH1cbn1cblxuY2xhc3MgUnVudGltZURlcGVuZGVuY3lQcm92aWRlciBpbXBsZW1lbnRzIElQYWNrYWdlUHJvdmlkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb2plY3Q6IFByb2plY3QpIHt9XG4gIHB1YmxpYyBnZXQgcGFja2FnZXMoKTogRGVwZW5kZW5jeVtdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0LmRlcHMuYWxsLmZpbHRlcihcbiAgICAgIChkZXApID0+IGRlcC50eXBlID09PSBEZXBlbmRlbmN5VHlwZS5SVU5USU1FLFxuICAgICk7XG4gIH1cbn1cblxuY2xhc3MgRGV2RGVwZW5kZW5jeVByb3ZpZGVyIGltcGxlbWVudHMgSVBhY2thZ2VQcm92aWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdDogUHJvamVjdCkge31cbiAgcHVibGljIGdldCBwYWNrYWdlcygpOiBEZXBlbmRlbmN5W10ge1xuICAgIHJldHVybiB0aGlzLnByb2plY3QuZGVwcy5hbGwuZmlsdGVyKChkZXApID0+XG4gICAgICBbRGVwZW5kZW5jeVR5cGUuVEVTVCwgRGVwZW5kZW5jeVR5cGUuREVWRU5WXS5pbmNsdWRlcyhkZXAudHlwZSksXG4gICAgKTtcbiAgfVxufVxuIl19