dashboard/shell/scripts/extension/helmpatch

81 lines
2.7 KiB
JavaScript
Executable File

#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const yaml = require('js-yaml');
console.log('Helm file update');
if (process.argv.length !== 4) {
console.log('Incorrect number of arguments');
process.exit(1);
}
const chartFolder = process.argv[2];
const pkgFilePath = process.argv[3];
const pkgFile = JSON.parse(fs.readFileSync(pkgFilePath, 'utf8'));
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 updates (annotations)
// --------------------------------------------------------------------------------
const chart = yaml.load(fs.readFileSync(chartFile, 'utf8'));
let chartUpdated = false;
if (pkgFile.rancher?.annotations) {
chart.annotations = chart.annotations || {};
Object.entries(pkgFile.rancher.annotations).forEach(([key, value]) => {
if (chart.annotations[key] !== value) {
chart.annotations[key] = value;
chartUpdated = true;
}
});
}
if (chartUpdated) {
fs.writeFileSync(chartFile, yaml.dump(chart), 'utf8');
console.log('Updated Chart.yaml annotations');
}
// --------------------------------------------------------------------------------
// values.yaml updates (endpoints)
// --------------------------------------------------------------------------------
const values = yaml.load(fs.readFileSync(valuesFile, 'utf8'));
// Get package metadata from package.json
const pkgName = pkgFile.name;
const pkgVersion = pkgFile.version;
const pkgFullName = `${ pkgName }-${ pkgVersion }`;
// Determine build type from environment
const isGitHubBuild = process.env.GITHUB_BUILD === 'true';
// Set endpoints based on build type
if (isGitHubBuild) {
const githubSource = process.env.GITHUB_SOURCE;
const githubBranch = process.env.GITHUB_BRANCH;
values.plugin.endpoint = `https://raw.githubusercontent.com/${ githubSource }/${ githubBranch }/extensions/${ pkgName }/${ pkgVersion }`;
} else {
const imagePrefix = process.env.IMAGE_PREFIX || '';
const baseExt = process.env.BASE_EXT;
values.plugin.endpoint = `http://${ imagePrefix }${ baseExt }-svc.cattle-ui-plugin-system:8080/plugin/${ pkgFullName }`;
}
// Always set compressedEndpoint as endpoint + .tgz
values.plugin.compressedEndpoint = `${ values.plugin.endpoint }.tgz`;
// Write updated values.yaml
fs.writeFileSync(valuesFile, yaml.dump(values, { quotingType: '"' }), 'utf8');
console.log('Updated values.yaml endpoints:');
console.log(`- endpoint: ${ values.plugin.endpoint }`);
console.log(`- compressedEndpoint: ${ values.plugin.compressedEndpoint }`);