This commit is contained in:
njucz 2019-11-05 13:32:56 +08:00 коммит произвёл mybayern1974
Родитель 33c5d42f3c
Коммит 3651e4617d
2 изменённых файлов: 45 добавлений и 2 удалений

Просмотреть файл

@ -13,7 +13,7 @@ import { TelemetryWrapper } from "vscode-extension-telemetry-wrapper";
import { AzureAccount, CloudShell } from "./azure-account.api";
import { BaseShell } from "./baseShell";
import { aciConfig, Constants, exportContainerCmd, exportTestScript } from "./constants";
import { azFilePush, escapeFile, TerraformCommand, TestOption } from "./shared";
import { azFileDelete, azFilePush, escapeFile, TerraformCommand, TestOption } from "./shared";
import { terraformChannel } from "./terraformChannel";
import { getStorageAccountforCloudShell, IStorageAccount } from "./utils/cloudShellUtils";
import * as settingUtils from "./utils/settingUtils";
@ -47,6 +47,32 @@ export class AzureCloudShell extends BaseShell {
}
}
public async deleteFiles(files: vscode.Uri[]): Promise<void> {
const RETRY_TIMES = 3;
if (!await this.connectedToCloudShell()) {
terraformChannel.appendLine(`cloud shell can not be opened, file deleting operation is not synced`);
return;
}
for (const file of files.map((a) => a.fsPath)) {
for (let i = 0; i < RETRY_TIMES; i++) {
try {
terraformChannel.appendLine(`Deleting file ${file} from cloud shell`);
await azFileDelete(
vscode.workspace.getWorkspaceFolder(vscode.Uri.file(file)).name,
this.storageAccountName,
this.storageAccountKey,
this.fileShareName,
file);
break;
} catch (err) {
terraformChannel.appendLine(err);
}
}
}
}
public async runTerraformTests(testType: string, workingDirectory: string) {
if (await this.connectedToCloudShell()) {

Просмотреть файл

@ -16,9 +16,12 @@ import { checkTerraformInstalled } from "./utils/terraformUtils";
import { DialogOption } from "./utils/uiUtils";
import { selectWorkspaceFolder } from "./utils/workspaceUtils";
let fileWatcher: vscode.FileSystemWatcher;
export async function activate(ctx: vscode.ExtensionContext) {
await checkTerraformInstalled();
await TelemetryWrapper.initilizeFromJsonFile(ctx.asAbsolutePath("./package.json"));
initFileWatcher(ctx);
ctx.subscriptions.push(TelemetryWrapper.registerCommand("azureTerraform.init", () => {
terraformShellManager.getShell().runTerraformCmd(TerraformCommand.Init);
@ -88,4 +91,18 @@ export async function activate(ctx: vscode.ExtensionContext) {
export function deactivate(): void {
terraformShellManager.dispose();
}
if (fileWatcher) {
fileWatcher.dispose();
}
}
function initFileWatcher(ctx: vscode.ExtensionContext): void {
fileWatcher = vscode.workspace.createFileSystemWatcher(getSyncFileBlobPattern());
ctx.subscriptions.push(
fileWatcher.onDidDelete((deletedUri) => {
if (isTerminalSetToCloudShell()) {
terraformShellManager.getCloudShell().deleteFiles([deletedUri]);
}
}),
);
}