vscode-appwrite/src/utils/tar.ts
2021-05-30 22:22:01 -05:00

34 lines
1.2 KiB
TypeScript

import tar = require("tar");
import { Uri, window, workspace } from "vscode";
import { ext } from "../extensionVariables";
import * as path from "path";
import * as fs from "fs";
import { sleep } from './sleep';
export async function getTarReadStream(folder: Uri): Promise<string | undefined> {
try {
const folderName = path.basename(folder.path);
const tarName = `${folderName}.tar.gz`;
const cwd = path.resolve(folder.fsPath, '..');
if (cwd === undefined) {
window.showErrorMessage("No workspace open.");
return;
}
ext.outputChannel.appendLog(`Creating '${tarName}' in '${workspace.workspaceFolders?.[0].uri.fsPath}'...`);
const tarFilePath = path.join(ext.context?.globalStorageUri.fsPath ?? '', tarName);
await workspace.fs.createDirectory(ext.context.globalStorageUri);
tar.create({ gzip: true, cwd: cwd, mode: 1777 }, [path.relative(cwd, folder.fsPath)]).pipe(fs.createWriteStream(tarFilePath));
await sleep(500);
ext.outputChannel.appendLog(`Created ${tarFilePath}`);
return tarFilePath;
} catch (e) {
ext.outputChannel?.appendLog("Error creating tar.gz: " + e);
}
}