UNPKG

7.92 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const path = require("path");
4const errors_1 = require("../models/errors");
5const utils_1 = require("../utils");
6function validateOutputPath(workspaceRoot, projectConfig) {
7 if (!projectConfig.outputPath) {
8 throw new errors_1.InvalidConfigError(`The 'projects[${projectConfig.name || projectConfig._index}].outputPath' is required.`);
9 }
10 if (path.isAbsolute(projectConfig.outputPath)) {
11 throw new errors_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 errors_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 errors_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 errors_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 errors_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 errors_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 errors_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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtb3V0cHV0LXBhdGguanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInNyYy9oZWxwZXJzL3ZhbGlkYXRlLW91dHB1dC1wYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTZCO0FBRTdCLDZDQUFzRDtBQUV0RCxvQ0FBbUQ7QUFFbkQsU0FBZ0Isa0JBQWtCLENBQUMsYUFBcUIsRUFBRSxhQUFrRTtJQUN4SCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRTtRQUMzQixNQUFNLElBQUksMkJBQWtCLENBQ3hCLGlCQUFpQixhQUFhLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxNQUFNLDRCQUE0QixDQUFDLENBQUM7S0FDaEc7SUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNDLE1BQU0sSUFBSSwyQkFBa0IsQ0FDeEIsaUJBQWlCLGFBQWEsQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLE1BQU0sc0NBQXNDLENBQUMsQ0FBQztLQUMxRztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXpFLElBQUksbUJBQVcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLEVBQUU7UUFDeEMsTUFBTSxJQUFJLDJCQUFrQixDQUN4QixpQkFBaUIsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsTUFDckQsaUVBQWlFLENBQUMsQ0FBQztLQUMxRTtJQUNELElBQUksbUJBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLElBQUksVUFBVSxLQUFLLEdBQUcsRUFBRTtRQUM1RCxNQUFNLElBQUksMkJBQWtCLENBQ3hCLGlCQUFpQixhQUFhLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxNQUNyRCwrREFBK0QsQ0FBQyxDQUFDO0tBQ3hFO0lBQ0QsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUU7UUFDNUMsTUFBTSxJQUFJLDJCQUFrQixDQUN4QixpQkFBaUIsYUFBYSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsTUFDckQsOERBQThELENBQUMsQ0FBQztLQUN2RTtJQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BELElBQUksVUFBVSxLQUFLLGNBQWMsRUFBRTtRQUMvQixNQUFNLElBQUksMkJBQWtCLENBQ3hCLGlCQUFpQixhQUFhLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxNQUNyRCw4REFBOEQsQ0FBQyxDQUFDO0tBQ3ZFO0lBQ0QsSUFBSSxrQkFBVSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRTtRQUN2QyxNQUFNLElBQUksMkJBQWtCLENBQ3hCLHFEQUFxRCxhQUFhLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxNQUN6RiwwQkFBMEIsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsSUFBSSxrQkFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUNyQyxNQUFNLElBQUksMkJBQWtCLENBQ3hCLHdEQUF3RCxhQUFhLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxNQUM1RiwwQkFBMEIsQ0FBQyxDQUFDO0tBQ25DO0FBQ0wsQ0FBQztBQS9DRCxnREErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlnRXJyb3IgfSBmcm9tICcuLi9tb2RlbHMvZXJyb3JzJztcbmltcG9ydCB7IEFwcFByb2plY3RDb25maWdJbnRlcm5hbCwgTGliUHJvamVjdENvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vbW9kZWxzL2ludGVybmFscyc7XG5pbXBvcnQgeyBpc0luRm9sZGVyLCBpc1NhbWVQYXRocyB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlT3V0cHV0UGF0aCh3b3Jrc3BhY2VSb290OiBzdHJpbmcsIHByb2plY3RDb25maWc6IEFwcFByb2plY3RDb25maWdJbnRlcm5hbCB8IExpYlByb2plY3RDb25maWdJbnRlcm5hbCk6IHZvaWQge1xuICAgIGlmICghcHJvamVjdENvbmZpZy5vdXRwdXRQYXRoKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnRXJyb3IoXG4gICAgICAgICAgICBgVGhlICdwcm9qZWN0c1ske3Byb2plY3RDb25maWcubmFtZSB8fCBwcm9qZWN0Q29uZmlnLl9pbmRleH1dLm91dHB1dFBhdGgnIGlzIHJlcXVpcmVkLmApO1xuICAgIH1cblxuICAgIGlmIChwYXRoLmlzQWJzb2x1dGUocHJvamVjdENvbmZpZy5vdXRwdXRQYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ0Vycm9yKFxuICAgICAgICAgICAgYFRoZSAncHJvamVjdHNbJHtwcm9qZWN0Q29uZmlnLm5hbWUgfHwgcHJvamVjdENvbmZpZy5faW5kZXh9XS5vdXRwdXRQYXRoJyBtdXN0IGJlIHJlbGF0aXZlIHBhdGguYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvamVjdFJvb3QgPSBwYXRoLnJlc29sdmUod29ya3NwYWNlUm9vdCwgcHJvamVjdENvbmZpZy5yb290IHx8ICcnKTtcblxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoLnJlc29sdmUod29ya3NwYWNlUm9vdCwgcHJvamVjdENvbmZpZy5vdXRwdXRQYXRoKTtcblxuICAgIGlmIChpc1NhbWVQYXRocyh3b3Jrc3BhY2VSb290LCBvdXRwdXRQYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ0Vycm9yKFxuICAgICAgICAgICAgYFRoZSAncHJvamVjdHNbJHtwcm9qZWN0Q29uZmlnLm5hbWUgfHwgcHJvamVjdENvbmZpZy5faW5kZXhcbiAgICAgICAgICAgIH1dLm91dHB1dFBhdGgnIG11c3Qgbm90IGJlIHRoZSBzYW1lIGFzIHdvcmtzcGFjZSByb290IGRpcmVjdG9yeS5gKTtcbiAgICB9XG4gICAgaWYgKGlzU2FtZVBhdGhzKHByb2plY3RSb290LCBvdXRwdXRQYXRoKSB8fCBvdXRwdXRQYXRoID09PSAnLicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWdFcnJvcihcbiAgICAgICAgICAgIGBUaGUgJ3Byb2plY3RzWyR7cHJvamVjdENvbmZpZy5uYW1lIHx8IHByb2plY3RDb25maWcuX2luZGV4XG4gICAgICAgICAgICB9XS5vdXRwdXRQYXRoJyBtdXN0IG5vdCBiZSB0aGUgc2FtZSBhcyBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5LmApO1xuICAgIH1cbiAgICBpZiAob3V0cHV0UGF0aCA9PT0gcGF0aC5wYXJzZShvdXRwdXRQYXRoKS5yb290KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnRXJyb3IoXG4gICAgICAgICAgICBgVGhlICdwcm9qZWN0c1ske3Byb2plY3RDb25maWcubmFtZSB8fCBwcm9qZWN0Q29uZmlnLl9pbmRleFxuICAgICAgICAgICAgfV0ub3V0cHV0UGF0aCcgbXVzdCBub3QgYmUgdGhlIHNhbWUgYXMgc3lzdGVtIHJvb3QgZGlyZWN0b3J5LmApO1xuICAgIH1cblxuICAgIGNvbnN0IHNyY0RpckhvbWVSb290ID0gcGF0aC5wYXJzZShwcm9qZWN0Um9vdCkucm9vdDtcbiAgICBpZiAob3V0cHV0UGF0aCA9PT0gc3JjRGlySG9tZVJvb3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWdFcnJvcihcbiAgICAgICAgICAgIGBUaGUgJ3Byb2plY3RzWyR7cHJvamVjdENvbmZpZy5uYW1lIHx8IHByb2plY3RDb25maWcuX2luZGV4XG4gICAgICAgICAgICB9XS5vdXRwdXRQYXRoJyBtdXN0IG5vdCBiZSB0aGUgc2FtZSBhcyBzeXN0ZW0gcm9vdCBkaXJlY3RvcnkuYCk7XG4gICAgfVxuICAgIGlmIChpc0luRm9sZGVyKG91dHB1dFBhdGgsIHdvcmtzcGFjZVJvb3QpKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnRXJyb3IoXG4gICAgICAgICAgICBgVGhlIHdvcmtzcGFjZSBmb2xkZXIgbXVzdCBub3QgYmUgaW5zaWRlICdwcm9qZWN0c1ske3Byb2plY3RDb25maWcubmFtZSB8fCBwcm9qZWN0Q29uZmlnLl9pbmRleFxuICAgICAgICAgICAgfV0ub3V0cHV0UGF0aCcgZGlyZWN0b3J5LmApO1xuICAgIH1cbiAgICBpZiAoaXNJbkZvbGRlcihvdXRwdXRQYXRoLCBwcm9qZWN0Um9vdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWdFcnJvcihcbiAgICAgICAgICAgIGBUaGUgcHJvamVjdCByb290IGZvbGRlciBtdXN0IG5vdCBiZSBpbnNpZGUgJ3Byb2plY3RzWyR7cHJvamVjdENvbmZpZy5uYW1lIHx8IHByb2plY3RDb25maWcuX2luZGV4XG4gICAgICAgICAgICB9XS5vdXRwdXRQYXRoJyBkaXJlY3RvcnkuYCk7XG4gICAgfVxufVxuIl19
\No newline at end of file