UNPKG

3.45 kBJavaScriptView Raw
1"use strict";
2var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3 if (k2 === undefined) k2 = k;
4 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5}) : (function(o, m, k, k2) {
6 if (k2 === undefined) k2 = k;
7 o[k2] = m[k];
8}));
9var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10 Object.defineProperty(o, "default", { enumerable: true, value: v });
11}) : function(o, v) {
12 o["default"] = v;
13});
14var __importStar = (this && this.__importStar) || function (mod) {
15 if (mod && mod.__esModule) return mod;
16 var result = {};
17 if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18 __setModuleDefault(result, mod);
19 return result;
20};
21Object.defineProperty(exports, "__esModule", { value: true });
22exports.loadVdevConfig = void 0;
23const fs = __importStar(require("fs-extra"));
24const Path = __importStar(require("path"));
25const renderer_1 = require("./renderer");
26const deepmerge = require("deepmerge");
27// --------- /Public Types --------- //
28// --------- Public Loaders --------- //
29const overwriteMerge = (target, source, options) => source;
30/** Parse the ./vdev.yaml and return as is */
31async function loadVdevConfig(rootDir) {
32 var _a, _b;
33 rootDir = rootDir || "./";
34 const vdevFile = Path.join(rootDir, 'vdev.yaml');
35 //// Get the __version__
36 const packageJson = await fs.readJSON('./package.json');
37 let __version__ = (_a = packageJson.__version__) !== null && _a !== void 0 ? _a : packageJson.version;
38 //// build the data for the vdev template
39 // TODO: probably needs to put the other variable from the handlebars helpers here
40 const data = { __version__ };
41 // NOTE: Here we use the loadTempletezedYaml, but for now, the vdev files are not templates, just the k8s yamls are.
42 let vdevObj = await loadVdevFile(vdevFile, true, data);
43 // TODO: probably need to do some validate here.
44 // load the sub vdev files if defined
45 if (vdevObj.vdevFiles) {
46 for (const subRelVdevFile of vdevObj.vdevFiles) {
47 const subVdevFile = Path.join(rootDir, subRelVdevFile);
48 const exists = await fs.pathExists(subVdevFile);
49 if (exists) {
50 console.log(`INFO - Loading extra vdev file: ${subVdevFile}`);
51 try {
52 let subVdevObj = await loadVdevFile(subVdevFile, false, data);
53 vdevObj = deepmerge(vdevObj, subVdevObj, { arrayMerge: overwriteMerge });
54 }
55 catch (ex) {
56 console.log(`ERROR - Cannot load vdev files ${subVdevFile} (skipping file)\n\tCause: ${ex}`);
57 }
58 }
59 }
60 }
61 //// Allow the __version__ to be updated
62 vdevObj.__version__ = __version__;
63 vdevObj.imageTag = (_b = vdevObj.imageTag) !== null && _b !== void 0 ? _b : 'latest';
64 return vdevObj;
65}
66exports.loadVdevConfig = loadVdevConfig;
67// --------- /Public Loaders --------- //
68/**
69 * Load a single vdev yaml file. Can be the base or a sub vdev file
70 * @param base If the vdev file is the base (should have more validation)
71 */
72async function loadVdevFile(vdevFile, base, data) {
73 const vdevRawObj = await renderer_1.loadTemplatizedYaml(vdevFile, data);
74 // TODO: need to do validation
75 return vdevRawObj;
76}