UNPKG

appcenter-cli

Version:

Command line tool for Visual Studio App Center

253 lines (252 loc) 7.86 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.walk = exports.access = exports.directoryExists = exports.fileExists = exports.openTempFile = exports.close = exports.unlink = exports.rmDir = exports.cpFile = exports.cpDir = exports.cp = exports.mkTempDir = exports.mkdir = exports.exists = exports.write = exports.writeFile = exports.readdir = exports.readFile = exports.read = exports.open = exports.stat = void 0; const fs = require("fs"); const path = require("path"); const rimraf = require("rimraf"); const temp = require("temp"); temp.track(); function stat(path) { return __awaiter(this, void 0, void 0, function* () { return (yield callFs(fs.stat, path))[0]; }); } exports.stat = stat; function open(path, flags, mode) { return __awaiter(this, void 0, void 0, function* () { return (yield callFs(fs.open, path, flags, mode))[0]; }); } exports.open = open; function read(fd, buffer, offset, length, position) { return __awaiter(this, void 0, void 0, function* () { const result = yield callFs(fs.read, fd, buffer, offset, length, position); return { bytesRead: result[0], buffer: result[1] }; }); } exports.read = read; function readFile(...args) { return __awaiter(this, void 0, void 0, function* () { return (yield callFs(fs.readFile, ...args))[0]; }); } exports.readFile = readFile; function readdir(path) { return __awaiter(this, void 0, void 0, function* () { return (yield callFs(fs.readdir, path))[0]; }); } exports.readdir = readdir; function writeFile(filename, data) { return __awaiter(this, void 0, void 0, function* () { return (yield callFs(fs.writeFile, filename, data))[0]; }); } exports.writeFile = writeFile; function write(fd, data) { return __awaiter(this, void 0, void 0, function* () { return (yield callFs(fs.write, fd, data, 0, data.length))[0]; }); } exports.write = write; function exists(path) { return new Promise((resolve, reject) => { fs.stat(path, (err) => { if (err) { if (err.code === "ENOENT") { resolve(false); } else { reject(err); } } else { resolve(true); } }); }); } exports.exists = exists; function mkdir(path) { return callFs(fs.mkdir, path).then(() => { return; }); } exports.mkdir = mkdir; function mkTempDir(affixes) { return callTemp(temp.mkdir, affixes); } exports.mkTempDir = mkTempDir; function cp(source, target) { return __awaiter(this, void 0, void 0, function* () { const sourceStats = yield stat(source); if (sourceStats.isDirectory()) { yield cpDir(source, target); } else { yield cpFile(source, target); } }); } exports.cp = cp; function cpDir(source, target) { return __awaiter(this, void 0, void 0, function* () { if (!(yield exists(target))) { createLongPath(target); } const files = yield readdir(source); for (let i = 0; i < files.length; i++) { const sourceEntry = path.join(source, files[i]); const targetEntry = path.join(target, files[i]); yield cp(sourceEntry, targetEntry); } }); } exports.cpDir = cpDir; function cpFile(source, target) { return new Promise((resolve, reject) => { const targetFolder = path.dirname(target); if (!fs.existsSync(targetFolder)) { createLongPath(targetFolder); } const sourceStream = fs.createReadStream(source); const targetStream = fs.createWriteStream(target); targetStream.on("close", () => resolve()); targetStream.on("error", (err) => reject(err)); sourceStream.pipe(targetStream); }); } exports.cpFile = cpFile; function rmDir(source, recursive = true) { if (recursive) { return new Promise((resolve, reject) => { rimraf(source, (err) => { if (err) { reject(err); } else { resolve(); } }); }); } else { return callFs(fs.rmdir, source).then(() => { return; }); } } exports.rmDir = rmDir; function unlink(filePath) { return callFs(fs.unlink, filePath).then(() => { return; }); } exports.unlink = unlink; function close(fd) { return callFs(fs.close, fd).then(() => { return; }); } exports.close = close; function openTempFile(...args) { return callTemp(temp.open, ...args); } exports.openTempFile = openTempFile; function fileExists(path) { return __awaiter(this, void 0, void 0, function* () { return yield pathExists(path, true); }); } exports.fileExists = fileExists; function directoryExists(path) { return __awaiter(this, void 0, void 0, function* () { return yield pathExists(path, false); }); } exports.directoryExists = directoryExists; function access(path, mode) { return __awaiter(this, void 0, void 0, function* () { return callFs(fs.access, path, mode).then(() => { return; }); }); } exports.access = access; function walk(dir) { return __awaiter(this, void 0, void 0, function* () { const stats = yield stat(dir); if (stats.isDirectory()) { let files = []; for (const file of yield readdir(dir)) { files = files.concat(yield walk(path.join(dir, file))); } return files; } else { return [dir]; } }); } exports.walk = walk; function pathExists(path, isFile) { return __awaiter(this, void 0, void 0, function* () { let stats = null; try { stats = yield stat(path); } catch (err) { return false; } return isFile === stats.isFile(); }); } function createLongPath(target) { let targetFolder = target; const notExistsFolder = []; while (!fs.existsSync(targetFolder)) { notExistsFolder.push(path.basename(targetFolder)); targetFolder = path.resolve(targetFolder, ".."); } notExistsFolder.reverse().forEach((element) => { targetFolder = path.resolve(targetFolder, element); fs.mkdirSync(targetFolder); }); } function callFs(func, ...args) { return new Promise((resolve, reject) => { func.apply(fs, args.concat([ (err, ...args) => { if (err) { reject(err); } else { resolve(args); } }, ])); }); } function callTemp(func, ...args) { return new Promise((resolve, reject) => { func.apply(temp, args.concat([ (err, result) => { if (err) { reject(err); } else { resolve(result); } }, ])); }); }