UNPKG

mediacentral-publish

Version:

A publish tool for publishing cloud-ux projects

50 lines (46 loc) 2.98 kB
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } const { readFileSync, writeFileSync, existsSync, mkdirSync } = require('fs'); const { join } = require('path'); const { execSync } = require('child_process'); const ejs = require('ejs'); const logger = require.main.require('log4js').getLogger(`mediacentral-publish ${__filename}`); /** * Create helm chart using template files * @param {String} path * @param {String} PROJECT_NAME * @param {String | Number} VERSION * @param {String} ORGANIZATION * @returns {{file: path}} {file: path} */ module.exports = (() => { var _ref = _asyncToGenerator(function* (path, PROJECT_NAME, VERSION, ORGANIZATION) { logger.trace('Creating Helm Chart with path: ', path, '\nProject Name: ', PROJECT_NAME, '\n Version ', VERSION, '\nAnd organization: ', ORGANIZATION); const helm_chart_path = join(path, PROJECT_NAME); if (!existsSync(helm_chart_path)) { mkdirSync(join(path, `${PROJECT_NAME}`)); mkdirSync(join(path, `${PROJECT_NAME}`, `templates`)); } let uiplugin = ejs.render(readFileSync(join(__dirname, `templates`, `uiplugin.yaml`), 'utf8'), { projectName: PROJECT_NAME }); let chart = ejs.render(readFileSync(join(__dirname, `templates`, `Chart.yaml`), 'utf8'), { projectName: PROJECT_NAME, projectVersion: VERSION }); let values = ejs.render(readFileSync(join(__dirname, `templates`, `values.yaml`), 'utf8'), { projectName: PROJECT_NAME, projectOrganization: ORGANIZATION, projectVersion: VERSION }); writeFileSync(join(path, `${PROJECT_NAME}`, `templates`, `uiplugin.yaml`), uiplugin, { encoding: 'utf8' }); writeFileSync(join(path, `${PROJECT_NAME}`, `Chart.yaml`), chart, { encoding: 'utf8' }); writeFileSync(join(path, `${PROJECT_NAME}`, `values.yaml`), values, { encoding: 'utf8' }); const outputFile = join(path, `${PROJECT_NAME}-${VERSION}.tgz`); try { logger.trace(`Creating Helm chart with command:\nhelm package "${join(path, PROJECT_NAME)}" -d "${path}"`); const HELM_CHART = execSync(`helm package "${join(path, PROJECT_NAME)}" -d "${path}"`).toString('utf8').trim(); } catch (e) { logger.trace('Error while creating HELM CHART'); if (!existsSync(outputFile)) { throw e; } } return { file: outputFile }; }); return function (_x, _x2, _x3, _x4) { return _ref.apply(this, arguments); }; })();