@storm-software/k8s-tools
Version:
Tools for managing Kubernetes (k8s) infrastructure within a Nx workspace.
106 lines (93 loc) • 4.46 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunkTRNSRIONjs = require('./chunk-TRNSRION.js');
var _chunkHEVP2Q77js = require('./chunk-HEVP2Q77.js');
// src/generators/helm-dependency/generator.ts
var _devkit = require('@nx/devkit');
var _jsyaml = require('js-yaml'); var _jsyaml2 = _interopRequireDefault(_jsyaml);
async function helmDependencyGeneratorFn(tree, options, config) {
_chunkHEVP2Q77js.writeDebug.call(void 0, "\u{1F4DD} Preparing to add Helm Dependency", config);
const project = _devkit.readProjectConfiguration.call(void 0, tree, options.project);
if (!_optionalChain([project, 'access', _ => _.targets, 'optionalAccess', _2 => _2["helm-package"]])) {
throw new Error(
`Project ${options.project} does not have a helm target. Please run the chart generator first.`
);
}
_devkit.updateProjectConfiguration.call(void 0,
tree,
options.project,
addDependencyToConfig(project, options.repositoryName, options.repository)
);
updateChartYaml(
tree,
project,
options.chartName,
options.chartVersion,
options.repository
);
if (options.format) {
await _devkit.formatFiles.call(void 0, tree);
}
return {
success: true
};
}
var generator_default = _chunkTRNSRIONjs.withRunGenerator.call(void 0,
"Helm Dependency",
helmDependencyGeneratorFn
);
function addDependencyToConfig(project, name, url) {
return {
...project,
targets: {
...project.targets,
helm: {
..._optionalChain([project, 'access', _3 => _3.targets, 'optionalAccess', _4 => _4["helm-package"]]),
options: {
..._optionalChain([project, 'access', _5 => _5.targets, 'optionalAccess', _6 => _6["helm-package"], 'optionalAccess', _7 => _7.options]),
dependencies: {
..._optionalChain([project, 'access', _8 => _8.targets, 'optionalAccess', _9 => _9["helm-package"], 'optionalAccess', _10 => _10.options, 'access', _11 => _11.dependencies]),
repositories: _optionalChain([project, 'access', _12 => _12.targets, 'optionalAccess', _13 => _13["helm-package"], 'optionalAccess', _14 => _14.options, 'access', _15 => _15.dependencies, 'access', _16 => _16.repositories]) ? [
...project.targets["helm-package"].options.dependencies.repositories,
{ name, url }
] : [{ name, url }]
}
}
}
}
};
}
function updateChartYaml(tree, project, name, version, repository) {
const chartFolder = _optionalChain([project, 'access', _17 => _17.targets, 'optionalAccess', _18 => _18["helm-package"], 'optionalAccess', _19 => _19.options, 'access', _20 => _20.chartFolder]);
const chartPath = `${chartFolder}/Chart.yaml`;
if (!tree.exists(chartPath)) {
throw new Error("Chart.yaml not found");
}
try {
const result = _optionalChain([tree, 'access', _21 => _21.read, 'call', _22 => _22(chartPath, "utf8"), 'optionalAccess', _23 => _23.toString, 'call', _24 => _24()]);
if (!result) {
throw new Error("Failed to read Chart.yaml");
}
const chartContents = _jsyaml2.default.load(result);
if (!chartContents.dependencies) {
chartContents.dependencies = [];
}
const existingDependency = chartContents.dependencies.find(
(dep) => dep.name === name
);
if (existingDependency) {
existingDependency.version = version;
existingDependency.repository = repository;
} else {
chartContents.dependencies.push({
name,
version,
repository
});
tree.write(chartPath, _jsyaml2.default.dump(chartContents));
}
} catch (error) {
console.error(error);
throw new Error("Failed to parse Chart.yaml");
}
}
exports.helmDependencyGeneratorFn = helmDependencyGeneratorFn; exports.generator_default = generator_default;