UNPKG

7.99 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const path = require("path");
4const error_models_1 = require("../error-models");
5const utils_1 = require("../utils");
6function validateOutputPath(workspaceRoot, projectConfig) {
7 if (!projectConfig.outputPath) {
8 throw new error_models_1.InvalidConfigError(`The 'projects[${projectConfig.name || projectConfig._index}].outputPath' is required.`);
9 }
10 if (path.isAbsolute(projectConfig.outputPath)) {
11 throw new error_models_1.InvalidConfigError(`The 'projects[${projectConfig.name || projectConfig._index}].outputPath' must be relative path.`);
12 }
13 const projectRoot = path.resolve(workspaceRoot, projectConfig.root || '');
14 const outputPath = path.resolve(workspaceRoot, projectConfig.outputPath);
15 if (utils_1.isSamePaths(workspaceRoot, outputPath)) {
16 throw new error_models_1.InvalidConfigError(`The 'projects[${projectConfig.name || projectConfig._index}].outputPath' must not be the same as workspace root directory.`);
17 }
18 if (utils_1.isSamePaths(projectRoot, outputPath) || outputPath === '.') {
19 throw new error_models_1.InvalidConfigError(`The 'projects[${projectConfig.name || projectConfig._index}].outputPath' must not be the same as project root directory.`);
20 }
21 if (outputPath === path.parse(outputPath).root) {
22 throw new error_models_1.InvalidConfigError(`The 'projects[${projectConfig.name || projectConfig._index}].outputPath' must not be the same as system root directory.`);
23 }
24 const srcDirHomeRoot = path.parse(projectRoot).root;
25 if (outputPath === srcDirHomeRoot) {
26 throw new error_models_1.InvalidConfigError(`The 'projects[${projectConfig.name || projectConfig._index}].outputPath' must not be the same as system root directory.`);
27 }
28 if (utils_1.isInFolder(outputPath, workspaceRoot)) {
29 throw new error_models_1.InvalidConfigError(`The workspace folder must not be inside 'projects[${projectConfig.name || projectConfig._index}].outputPath' directory.`);
30 }
31 if (utils_1.isInFolder(outputPath, projectRoot)) {
32 throw new error_models_1.InvalidConfigError(`The project root folder must not be inside 'projects[${projectConfig.name || projectConfig._index}].outputPath' directory.`);
33 }
34}
35exports.validateOutputPath = validateOutputPath;
36//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtb3V0cHV0LXBhdGguanMiLCJzb3VyY2VSb290IjoiQzovcHJvamVjdHMvYW5ndWxhci1idWlsZC8iLCJzb3VyY2VzIjpbInNyYy9oZWxwZXJzL3ZhbGlkYXRlLW91dHB1dC1wYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTZCO0FBQzdCLGtEQUFxRDtBQUVyRCxvQ0FBbUQ7QUFFbkQsNEJBQW1DLGFBQXFCLEVBQUUsYUFBa0U7SUFDeEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUU7UUFDM0IsTUFBTSxJQUFJLGlDQUFrQixDQUN4QixpQkFBaUIsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsTUFBTSw0QkFBNEIsQ0FBQyxDQUFDO0tBQ2hHO0lBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMzQyxNQUFNLElBQUksaUNBQWtCLENBQ3hCLGlCQUFpQixhQUFhLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxNQUFNLHNDQUFzQyxDQUFDLENBQUM7S0FDMUc7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTFFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV6RSxJQUFJLG1CQUFXLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxFQUFFO1FBQ3hDLE1BQU0sSUFBSSxpQ0FBa0IsQ0FDeEIsaUJBQWlCLGFBQWEsQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLE1BQ3JELGlFQUFpRSxDQUFDLENBQUM7S0FDMUU7SUFDRCxJQUFJLG1CQUFXLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxJQUFJLFVBQVUsS0FBSyxHQUFHLEVBQUU7UUFDNUQsTUFBTSxJQUFJLGlDQUFrQixDQUN4QixpQkFBaUIsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsTUFDckQsK0RBQStELENBQUMsQ0FBQztLQUN4RTtJQUNELElBQUksVUFBVSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFO1FBQzVDLE1BQU0sSUFBSSxpQ0FBa0IsQ0FDeEIsaUJBQWlCLGFBQWEsQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLE1BQ3JELDhEQUE4RCxDQUFDLENBQUM7S0FDdkU7SUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxJQUFJLFVBQVUsS0FBSyxjQUFjLEVBQUU7UUFDL0IsTUFBTSxJQUFJLGlDQUFrQixDQUN4QixpQkFBaUIsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsTUFDckQsOERBQThELENBQUMsQ0FBQztLQUN2RTtJQUNELElBQUksa0JBQVUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEVBQUU7UUFDdkMsTUFBTSxJQUFJLGlDQUFrQixDQUN4QixxREFBcUQsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsTUFDekYsMEJBQTBCLENBQUMsQ0FBQztLQUNuQztJQUNELElBQUksa0JBQVUsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQUU7UUFDckMsTUFBTSxJQUFJLGlDQUFrQixDQUN4Qix3REFBd0QsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsTUFDNUYsMEJBQTBCLENBQUMsQ0FBQztLQUNuQztBQUNMLENBQUM7QUEvQ0QsZ0RBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEludmFsaWRDb25maWdFcnJvciB9IGZyb20gJy4uL2Vycm9yLW1vZGVscyc7XG5pbXBvcnQgeyBBcHBQcm9qZWN0Q29uZmlnSW50ZXJuYWwsIExpYlByb2plY3RDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJuYWxzJztcbmltcG9ydCB7IGlzSW5Gb2xkZXIsIGlzU2FtZVBhdGhzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVPdXRwdXRQYXRoKHdvcmtzcGFjZVJvb3Q6IHN0cmluZywgcHJvamVjdENvbmZpZzogQXBwUHJvamVjdENvbmZpZ0ludGVybmFsIHwgTGliUHJvamVjdENvbmZpZ0ludGVybmFsKTogdm9pZCB7XG4gICAgaWYgKCFwcm9qZWN0Q29uZmlnLm91dHB1dFBhdGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWdFcnJvcihcbiAgICAgICAgICAgIGBUaGUgJ3Byb2plY3RzWyR7cHJvamVjdENvbmZpZy5uYW1lIHx8IHByb2plY3RDb25maWcuX2luZGV4fV0ub3V0cHV0UGF0aCcgaXMgcmVxdWlyZWQuYCk7XG4gICAgfVxuXG4gICAgaWYgKHBhdGguaXNBYnNvbHV0ZShwcm9qZWN0Q29uZmlnLm91dHB1dFBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnRXJyb3IoXG4gICAgICAgICAgICBgVGhlICdwcm9qZWN0c1ske3Byb2plY3RDb25maWcubmFtZSB8fCBwcm9qZWN0Q29uZmlnLl9pbmRleH1dLm91dHB1dFBhdGgnIG11c3QgYmUgcmVsYXRpdmUgcGF0aC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9qZWN0Um9vdCA9IHBhdGgucmVzb2x2ZSh3b3Jrc3BhY2VSb290LCBwcm9qZWN0Q29uZmlnLnJvb3QgfHwgJycpO1xuXG4gICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBhdGgucmVzb2x2ZSh3b3Jrc3BhY2VSb290LCBwcm9qZWN0Q29uZmlnLm91dHB1dFBhdGgpO1xuXG4gICAgaWYgKGlzU2FtZVBhdGhzKHdvcmtzcGFjZVJvb3QsIG91dHB1dFBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnRXJyb3IoXG4gICAgICAgICAgICBgVGhlICdwcm9qZWN0c1ske3Byb2plY3RDb25maWcubmFtZSB8fCBwcm9qZWN0Q29uZmlnLl9pbmRleFxuICAgICAgICAgICAgfV0ub3V0cHV0UGF0aCcgbXVzdCBub3QgYmUgdGhlIHNhbWUgYXMgd29ya3NwYWNlIHJvb3QgZGlyZWN0b3J5LmApO1xuICAgIH1cbiAgICBpZiAoaXNTYW1lUGF0aHMocHJvamVjdFJvb3QsIG91dHB1dFBhdGgpIHx8IG91dHB1dFBhdGggPT09ICcuJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ0Vycm9yKFxuICAgICAgICAgICAgYFRoZSAncHJvamVjdHNbJHtwcm9qZWN0Q29uZmlnLm5hbWUgfHwgcHJvamVjdENvbmZpZy5faW5kZXhcbiAgICAgICAgICAgIH1dLm91dHB1dFBhdGgnIG11c3Qgbm90IGJlIHRoZSBzYW1lIGFzIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkuYCk7XG4gICAgfVxuICAgIGlmIChvdXRwdXRQYXRoID09PSBwYXRoLnBhcnNlKG91dHB1dFBhdGgpLnJvb3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWdFcnJvcihcbiAgICAgICAgICAgIGBUaGUgJ3Byb2plY3RzWyR7cHJvamVjdENvbmZpZy5uYW1lIHx8IHByb2plY3RDb25maWcuX2luZGV4XG4gICAgICAgICAgICB9XS5vdXRwdXRQYXRoJyBtdXN0IG5vdCBiZSB0aGUgc2FtZSBhcyBzeXN0ZW0gcm9vdCBkaXJlY3RvcnkuYCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3JjRGlySG9tZVJvb3QgPSBwYXRoLnBhcnNlKHByb2plY3RSb290KS5yb290O1xuICAgIGlmIChvdXRwdXRQYXRoID09PSBzcmNEaXJIb21lUm9vdCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ0Vycm9yKFxuICAgICAgICAgICAgYFRoZSAncHJvamVjdHNbJHtwcm9qZWN0Q29uZmlnLm5hbWUgfHwgcHJvamVjdENvbmZpZy5faW5kZXhcbiAgICAgICAgICAgIH1dLm91dHB1dFBhdGgnIG11c3Qgbm90IGJlIHRoZSBzYW1lIGFzIHN5c3RlbSByb290IGRpcmVjdG9yeS5gKTtcbiAgICB9XG4gICAgaWYgKGlzSW5Gb2xkZXIob3V0cHV0UGF0aCwgd29ya3NwYWNlUm9vdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWdFcnJvcihcbiAgICAgICAgICAgIGBUaGUgd29ya3NwYWNlIGZvbGRlciBtdXN0IG5vdCBiZSBpbnNpZGUgJ3Byb2plY3RzWyR7cHJvamVjdENvbmZpZy5uYW1lIHx8IHByb2plY3RDb25maWcuX2luZGV4XG4gICAgICAgICAgICB9XS5vdXRwdXRQYXRoJyBkaXJlY3RvcnkuYCk7XG4gICAgfVxuICAgIGlmIChpc0luRm9sZGVyKG91dHB1dFBhdGgsIHByb2plY3RSb290KSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ0Vycm9yKFxuICAgICAgICAgICAgYFRoZSBwcm9qZWN0IHJvb3QgZm9sZGVyIG11c3Qgbm90IGJlIGluc2lkZSAncHJvamVjdHNbJHtwcm9qZWN0Q29uZmlnLm5hbWUgfHwgcHJvamVjdENvbmZpZy5faW5kZXhcbiAgICAgICAgICAgIH1dLm91dHB1dFBhdGgnIGRpcmVjdG9yeS5gKTtcbiAgICB9XG59XG4iXX0=
\No newline at end of file