mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -05:00
* removes more builder references * remove builder from profiler * formatting * fix profiler dailog * remove builder from oatuhdialog * remove the rest of builder references * formatting * add more strict null checks to base * enable strict tslint rules * fix formatting * fix compile error * fix the rest of the hygeny issues and add pipeline step * fix pipeline files
73 lines
2.7 KiB
TypeScript
73 lines
2.7 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
'use strict';
|
|
|
|
import * as download from './download';
|
|
import * as fs from 'fs';
|
|
import mkdirp = require('mkdirp');
|
|
import * as path from 'path';
|
|
import * as nls from 'vscode-nls';
|
|
const localize = nls.loadMessageBundle();
|
|
|
|
import { Shell, Platform } from '../utility/shell';
|
|
import { Errorable, failed } from '../interfaces';
|
|
import { addPathToConfig, toolPathBaseKey } from '../config/config';
|
|
|
|
export async function installKubectl(shell: Shell): Promise<Errorable<null>> {
|
|
const tool = 'kubectl';
|
|
const binFile = (shell.isUnix()) ? 'kubectl' : 'kubectl.exe';
|
|
const os = platformUrlString(shell.platform());
|
|
|
|
const version = await getStableKubectlVersion();
|
|
if (failed(version)) {
|
|
return { succeeded: false, error: version.error };
|
|
}
|
|
|
|
const installFolder = getInstallFolder(shell, tool);
|
|
mkdirp.sync(installFolder);
|
|
|
|
const kubectlUrl = `https://storage.googleapis.com/kubernetes-release/release/${version.result.trim()}/bin/${os}/amd64/${binFile}`;
|
|
const downloadFile = path.join(installFolder, binFile);
|
|
const downloadResult = await download.to(kubectlUrl, downloadFile);
|
|
if (failed(downloadResult)) {
|
|
return { succeeded: false, error: [localize('downloadKubectlFailed', 'Failed to download kubectl: {0}', downloadResult.error[0])] };
|
|
}
|
|
|
|
if (shell.isUnix()) {
|
|
fs.chmodSync(downloadFile, '0777');
|
|
}
|
|
|
|
await addPathToConfig(toolPathBaseKey(tool), downloadFile);
|
|
return { succeeded: true, result: null };
|
|
}
|
|
|
|
async function getStableKubectlVersion(): Promise<Errorable<string>> {
|
|
const downloadResult = await download.toTempFile('https://storage.googleapis.com/kubernetes-release/release/stable.txt');
|
|
if (failed(downloadResult)) {
|
|
return { succeeded: false, error: [localize('kubectlVersionCheckFailed', 'Failed to establish kubectl stable version: {0}', downloadResult.error[0])] };
|
|
}
|
|
const version = fs.readFileSync(downloadResult.result, 'utf-8');
|
|
fs.unlinkSync(downloadResult.result);
|
|
return { succeeded: true, result: version };
|
|
}
|
|
|
|
export function getInstallFolder(shell: Shell, tool: string): string {
|
|
return path.join(shell.home(), `.mssql-bdc/tools/${tool}`);
|
|
}
|
|
|
|
function platformUrlString(platform: Platform, supported?: Platform[]): string | null {
|
|
if (supported && supported.indexOf(platform) < 0) {
|
|
return null;
|
|
}
|
|
switch (platform) {
|
|
case Platform.Windows: return 'windows';
|
|
case Platform.MacOS: return 'darwin';
|
|
case Platform.Linux: return 'linux';
|
|
default: return null;
|
|
}
|
|
}
|
|
|
|
|