diff --git a/src/main/helm/helm-release-manager.ts b/src/main/helm/helm-release-manager.ts index e9b2cfeab1..824341023e 100644 --- a/src/main/helm/helm-release-manager.ts +++ b/src/main/helm/helm-release-manager.ts @@ -69,15 +69,19 @@ export async function installChart(chart: string, values: any, name: string | un await fse.writeFile(valuesFilePath, yaml.dump(values)); - const args = [ - "install", - name, + const args = ["install"]; + + if (name) { + args.push(name); + } + + args.push( chart, "--version", version, "--values", valuesFilePath, "--namespace", namespace, "--kubeconfig", kubeconfigPath, - ]; + ); if (!name) { args.push("--generate-name"); @@ -193,7 +197,6 @@ export async function rollback(name: string, namespace: string, revision: number return JSON.parse(await execHelm([ "rollback", name, - "--output", "json", "--namespace", namespace, "--kubeconfig", kubeconfigPath, ])); @@ -222,10 +225,6 @@ async function getResources(name: string, namespace: string, kubeconfigPath: str let stdout = ""; const kubectl = execFile(kubectlPath, kubectlArgs); - kubectl.stdout.on("data", output => stdout += output); - kubectl.stdin.write(helmOutput); - kubectl.stdin.end(); - kubectl .on("exit", (code, signal) => { if (typeof code === "number") { @@ -239,6 +238,10 @@ async function getResources(name: string, namespace: string, kubeconfigPath: str } }) .on("error", reject); + + kubectl.stdout.on("data", output => stdout += output); + kubectl.stdin.write(helmOutput); + kubectl.stdin.end(); }); } catch { return []; diff --git a/src/main/helm/helm-repo-manager.ts b/src/main/helm/helm-repo-manager.ts index 184cf64867..69dfd3bd62 100644 --- a/src/main/helm/helm-repo-manager.ts +++ b/src/main/helm/helm-repo-manager.ts @@ -91,20 +91,18 @@ export class HelmRepoManager extends Singleton { protected static async parseHelmEnv() { const output = await execHelm(["env"]); - const env = output - .split("\n") - .map(line => { - const match = line.match(/^(?[^=]*)=(?.*)$/); + const lines = output.split(/\r?\n/); // split by new line feed + const env: HelmEnv = {}; - if (match) { - return [match.groups.key, match.groups.value]; - } + lines.forEach((line: string) => { + const [key, value] = line.split("="); - return null; - }) - .filter(Boolean); + if (key && value) { + env[key] = value.replace(/"/g, ""); // strip quotas + } + }); - return Object.fromEntries(env); + return env; } public async repo(name: string): Promise {