From 4cf46d17780ecd3acb70c30937c339457528b2c0 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Tue, 16 Feb 2021 12:47:49 +0300 Subject: [PATCH] Refactor of excludeDeprecated helm service method Signed-off-by: Alex Andreev --- src/main/helm/helm-chart-manager.ts | 9 ++++--- src/main/helm/helm-service.ts | 38 +++++++++++++++-------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/main/helm/helm-chart-manager.ts b/src/main/helm/helm-chart-manager.ts index cf4a8e5ace..eb375bc3d9 100644 --- a/src/main/helm/helm-chart-manager.ts +++ b/src/main/helm/helm-chart-manager.ts @@ -4,9 +4,12 @@ import { HelmRepo, HelmRepoManager } from "./helm-repo-manager"; import logger from "../logger"; import { promiseExec } from "../promise-exec"; import { helmCli } from "./helm-cli"; +import { HelmChart } from "../../renderer/api/endpoints/helm-charts.api"; + +type HelmGroups = { [key: string]: HelmChart[] }; type CachedYaml = { - entries: any; // todo: types + entries: HelmGroups }; export class HelmChartManager { @@ -24,7 +27,7 @@ export class HelmChartManager { return charts[name]; } - public async charts(): Promise { + public async charts(): Promise { try { const cachedYaml = await this.cachedYaml(); @@ -32,7 +35,7 @@ export class HelmChartManager { } catch(error) { logger.error(error); - return []; + return {}; } } diff --git a/src/main/helm/helm-service.ts b/src/main/helm/helm-service.ts index 1918268075..2fb54a5847 100644 --- a/src/main/helm/helm-service.ts +++ b/src/main/helm/helm-service.ts @@ -3,6 +3,7 @@ import logger from "../logger"; import { repoManager } from "./helm-repo-manager"; import { HelmChartManager } from "./helm-chart-manager"; import { releaseManager } from "./helm-release-manager"; +import { HelmChart } from "../../renderer/api/endpoints/helm-charts.api"; class HelmService { public async installChart(cluster: Cluster, data: { chart: string; values: {}; name: string; namespace: string; version: string }) { @@ -18,14 +19,9 @@ class HelmService { for (const repo of repositories) { charts[repo.name] = {}; const manager = new HelmChartManager(repo); - let entries = await manager.charts(); + const { groups } = new HelmChartGroups(await manager.charts()); - entries = this.excludeDeprecated(entries); - - for (const key in entries) { - entries[key] = entries[key][0]; - } - charts[repo.name] = entries; + charts[repo.name] = groups; } return charts; @@ -95,21 +91,27 @@ class HelmService { return { message: output }; } +} - protected excludeDeprecated(entries: any) { - for (const key in entries) { - entries[key] = entries[key].filter((entry: any) => { - if (Array.isArray(entry)) { - return entry[0]["deprecated"] != true; - } +class HelmChartGroups { + items: Map; - return entry["deprecated"] != true; - }); - } - - return entries; + constructor(group: { [chartName: string]: HelmChart[] }) { + this.items = new Map(Object.entries(group)); + this.excludeDeprecatedGroups(); } + excludeDeprecatedGroups() { + for (const [chartName, charts] of this.items) { + if (charts[0].deprecated) { + this.items.delete(chartName); + } + } + } + + get groups() { + return Object.fromEntries(this.items); + } } export const helmService = new HelmService();