UNPKG

pk-template

Version:
183 lines 14.1 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = require("path"); const Yaml = __importStar(require("../pk-yaml")); const fs_1 = require("fs"); class PkProjectConf { constructor(data) { this.data = data; this.getApp = (name) => this.data.apps.find(app => app.name == name); this.getEnv = (name) => this.data.envs && this.data.envs.find(e => e.name === name); this.getModule = (name) => this.data.modules.find(m => m.name == name); } addApp(app) { if (this.getApp(app.name)) { throw new Error(`app ${app.name} already exists`); } this.data.apps.push(app); } prepareEnv(envName) { if (!this.data.envs) { this.data.envs = []; } const env = this.data.envs.find(e => e.name == envName); if (env) { return env; } const newEnv = { name: envName, values: {}, clusters: [], }; this.data.envs.push(newEnv); return newEnv; } prepareAppEnv(appName, envName) { const app = this.getApp(appName); if (!app) { throw new Error(`app ${appName} does not exists`); } if (!app.envs) { app.envs = []; } const env = app.envs.find(e => e.name == envName); if (env) { return env; } const newEnv = { name: envName, values: {}, clusters: [], }; app.envs.push(newEnv); return newEnv; } getMergedEnv(appName, envName, clusterName) { const app = this.getApp(appName); if (!app) { throw new Error(`app ${appName} not exits`); } const env = app.envs ? app.envs.find(e => e.name === envName) : this.getEnv(envName); if (!env) { return undefined; } if (!env.clusters.includes(clusterName)) { return undefined; } return Object.assign({}, (env || {}), { values: Object.assign({}, (this.data.values || {}), (env && env.values || {})) }); } addEnv(env) { if (this.getEnv(env.name)) { throw new Error(`env ${env.name} already exists`); } this.data.envs.push(env); } addModule(module) { if (this.getModule(module.name)) { throw new Error(`module ${module.name} already exists`); } this.data.modules.push(module); } upsertModule(module) { const idx = this.data.modules.findIndex(m => m.name == module.name); if (idx >= 0) { this.data.modules[idx] = module; } else { this.addModule(module); } } isDeployExecutable(branch, appName, envName, clusterName) { if (!branch || !this.data.deploy || this.data.deploy.length === 0) { return true; } const deployConfs = this.data.deploy.filter(d => d.branch === branch); if (deployConfs.length === 0) { return false; } const accepted = (accpets, denies, item, name) => { if (accpets && denies) { throw new Error(`deploy option ${name} and -${name} can not be used at the same time.`); } if (accpets) { return accpets.includes(item); } else if (denies) { return !denies.includes(item); } else { // both not exists return true; } }; return deployConfs.some(conf => accepted(conf.apps, conf['-apps'], appName, 'apps') && accepted(conf.envs, conf['-envs'], envName, 'envs') && accepted(conf.clusters, conf['-clusters'], clusterName, 'clusters')); } static exists(dir) { return dir ? fs_1.existsSync(path_1.join(dir, PkProjectConf.FILENAME)) : fs_1.existsSync(PkProjectConf.FILENAME); } static create(projectName, owner) { return new PkProjectConf({ project: { name: projectName, owner: owner, }, values: {}, apps: [], envs: [], modules: [], deploy: [], }); } static save(conf, dir) { const content = Yaml.dumpYaml(conf.data); fs_1.writeFileSync(`${dir}/${PkProjectConf.FILENAME}`, content, 'utf8'); } static tryLoad(uri) { try { const json = fs_1.readFileSync(uri, 'utf8'); return json; } catch (e) { return null; } } static _find(dir) { while (true) { let projectPath = path_1.resolve(dir, PkProjectConf.FILENAME); const content = PkProjectConf.tryLoad(projectPath); if (content) { const file = Yaml.parseYaml(content); return { projectPath, projectRoot: path_1.dirname(projectPath), projectConf: new PkProjectConf(file), }; } const parent = path_1.resolve(dir, '../'); if (parent == null || parent === dir) { return { projectPath: null, projectConf: null, projectRoot: null }; } dir = parent; } } static find(uri) { return uri ? PkProjectConf._find(uri + '/') : PkProjectConf._find(process.cwd() + '/'); } } PkProjectConf.FILENAME = "pk-project.yaml"; exports.PkProjectConf = PkProjectConf; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdENvbmYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGstY29uZi9wcm9qZWN0Q29uZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwrQkFBOEM7QUFDOUMsaURBQW1DO0FBRW5DLDJCQUE2RDtBQUU3RCxNQUFhLGFBQWE7SUFHeEIsWUFBbUIsSUFBb0I7UUFBcEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFTdkMsV0FBTSxHQUFHLENBQUMsSUFBWSxFQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQXNFNUYsV0FBTSxHQUFHLENBQUMsSUFBWSxFQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztRQWdCM0csY0FBUyxHQUFHLENBQUMsSUFBWSxFQUF5QixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztJQTlGakcsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FB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