mediacentral-publish
Version:
A publish tool for publishing cloud-ux projects
50 lines (46 loc) • 2.98 kB
JavaScript
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);
};
})();