From 39ca386d2af7af3a6306533a09fc03bec1d3633c Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Tue, 21 Jul 2020 16:01:01 -0700 Subject: [PATCH] let semver to parse the version (#11463) * let semver to parse the version * check --- .../src/services/tools/kubeCtlTool.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/extensions/resource-deployment/src/services/tools/kubeCtlTool.ts b/extensions/resource-deployment/src/services/tools/kubeCtlTool.ts index 3bfcf115ce..4f6762c8d7 100644 --- a/extensions/resource-deployment/src/services/tools/kubeCtlTool.ts +++ b/extensions/resource-deployment/src/services/tools/kubeCtlTool.ts @@ -16,8 +16,7 @@ export const KubeCtlToolName = 'kubectl'; interface KubeCtlVersion { clientVersion: { - major: string; - minor: string; + gitVersion: string; }; } @@ -50,8 +49,11 @@ export class KubeCtlTool extends ToolBase { let version: SemVer | undefined = undefined; if (output) { const versionJson: KubeCtlVersion = JSON.parse(output); - // kubectl version output might contain '+' character in the minor version, e.g. 16+, we have to remove it to make it a valid semantic version string. - version = new SemVer(`${versionJson.clientVersion.major}.${versionJson.clientVersion.minor.replace(/\+/g, '')}.0`); + if (versionJson && versionJson.clientVersion && versionJson.clientVersion.gitVersion) { + version = new SemVer(versionJson.clientVersion.gitVersion); + } else { + throw new Error(localize('resourceDeployment.invalidKubectlVersionOutput', "Unable to parse the kubectl version command output: \"{0}\"", output)); + } } return version; }