sync delete files
This commit is contained in:
Родитель
33c5d42f3c
Коммит
3651e4617d
|
@ -13,7 +13,7 @@ import { TelemetryWrapper } from "vscode-extension-telemetry-wrapper";
|
||||||
import { AzureAccount, CloudShell } from "./azure-account.api";
|
import { AzureAccount, CloudShell } from "./azure-account.api";
|
||||||
import { BaseShell } from "./baseShell";
|
import { BaseShell } from "./baseShell";
|
||||||
import { aciConfig, Constants, exportContainerCmd, exportTestScript } from "./constants";
|
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 { terraformChannel } from "./terraformChannel";
|
||||||
import { getStorageAccountforCloudShell, IStorageAccount } from "./utils/cloudShellUtils";
|
import { getStorageAccountforCloudShell, IStorageAccount } from "./utils/cloudShellUtils";
|
||||||
import * as settingUtils from "./utils/settingUtils";
|
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) {
|
public async runTerraformTests(testType: string, workingDirectory: string) {
|
||||||
if (await this.connectedToCloudShell()) {
|
if (await this.connectedToCloudShell()) {
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,12 @@ import { checkTerraformInstalled } from "./utils/terraformUtils";
|
||||||
import { DialogOption } from "./utils/uiUtils";
|
import { DialogOption } from "./utils/uiUtils";
|
||||||
import { selectWorkspaceFolder } from "./utils/workspaceUtils";
|
import { selectWorkspaceFolder } from "./utils/workspaceUtils";
|
||||||
|
|
||||||
|
let fileWatcher: vscode.FileSystemWatcher;
|
||||||
|
|
||||||
export async function activate(ctx: vscode.ExtensionContext) {
|
export async function activate(ctx: vscode.ExtensionContext) {
|
||||||
await checkTerraformInstalled();
|
await checkTerraformInstalled();
|
||||||
await TelemetryWrapper.initilizeFromJsonFile(ctx.asAbsolutePath("./package.json"));
|
await TelemetryWrapper.initilizeFromJsonFile(ctx.asAbsolutePath("./package.json"));
|
||||||
|
initFileWatcher(ctx);
|
||||||
|
|
||||||
ctx.subscriptions.push(TelemetryWrapper.registerCommand("azureTerraform.init", () => {
|
ctx.subscriptions.push(TelemetryWrapper.registerCommand("azureTerraform.init", () => {
|
||||||
terraformShellManager.getShell().runTerraformCmd(TerraformCommand.Init);
|
terraformShellManager.getShell().runTerraformCmd(TerraformCommand.Init);
|
||||||
|
@ -88,4 +91,18 @@ export async function activate(ctx: vscode.ExtensionContext) {
|
||||||
|
|
||||||
export function deactivate(): void {
|
export function deactivate(): void {
|
||||||
terraformShellManager.dispose();
|
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]);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче