dashboard/shell/scripts/extension/helmpatch

68 lines
2.0 KiB
JavaScript
Executable File

#!/usr/bin/env node
// Update Chart.yaml and values.yaml files
const fs = require('fs');
const path = require('path');
const yaml = require('js-yaml');
// TODO: Should already be in the template
// const UI_PLUGIN_ANNOTATION_NAME = 'catalog.cattle.io/ui-component';
// const UI_PLUGIN_ANNOTATION_VALUE = 'plugins';
console.log('Helm file update');
if (process.argv.length !== 4) {
console.log('Incorrect number of arguments');
process.exit(1);
}
const destFolder = process.argv[2];
const pkgFilePath = process.argv[3];
const pkgFile = JSON.parse(fs.readFileSync(pkgFilePath, 'utf8'));
const chartFolder = destFolder;
const chartFile = path.join(chartFolder, 'Chart.yaml');
const valuesFile = path.join(chartFolder, 'values.yaml');
if (!fs.existsSync(chartFolder)) {
console.log('Charts folder does not exist');
process.exit(1);
}
// --------------------------------------------------------------------------------
// Chart.yaml
// --------------------------------------------------------------------------------
const chart = yaml.load(fs.readFileSync(chartFile, 'utf8'));
let updated = false;
// Add in annotations to match any rules in the package file
if (pkgFile.rancher && typeof pkgFile.rancher === 'object') {
// See if there are any annotations and merge them in, if there are
if (pkgFile.rancher.annotations) {
chart.annotations = chart.annotations || {};
Object.keys(pkgFile.rancher.annotations).forEach((key) => {
chart.annotations[key] = pkgFile.rancher.annotations[key];
updated = true;
});
}
}
if (updated) {
// Write out updated file
const str = yaml.dump(chart);
fs.writeFileSync(chartFile, str, 'utf8');
}
// --------------------------------------------------------------------------------
// values.yaml
// --------------------------------------------------------------------------------
const values = yaml.load(fs.readFileSync(valuesFile, 'utf8'));
const valuesYaml = yaml.dump(values, { quotingType: '"' });
fs.writeFileSync(valuesFile, valuesYaml, 'utf8');