UNPKG

kui-shell

Version:

This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool

118 lines 4.41 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 }); const debug_1 = require("debug"); const fs = require("fs"); const fs_extra_1 = require("fs-extra"); const path_1 = require("path"); const tmp_1 = require("tmp"); const util_1 = require("./util"); const debug = debug_1.default('k8s/cmds/copy'); debug('loading'); const copyFile = (src, target) => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () { debug('copyFile', src, target); let targetFile = target; if (yield fs_extra_1.pathExists(target)) { if ((yield fs_extra_1.lstat(target)).isDirectory()) { targetFile = path_1.join(target, path_1.basename(src)); } } fs.readFile(src, (err, data) => { if (err) { reject(err); } else { resolve(fs_extra_1.writeFile(targetFile, data)); } }); })); exports.copy = (src, target) => __awaiter(void 0, void 0, void 0, function* () { return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () { debug('copy', src, target); const targetFolder = path_1.join(target, path_1.basename(src)); yield fs_extra_1.ensureDir(targetFolder); fs.readdir(src, (err, files) => { if (err) { reject(err); } else { resolve(Promise.all(files.map(file => new Promise((resolve, reject) => { const srcFile = path_1.join(src, file); fs.lstat(srcFile, (err, stats) => { if (err) { reject(err); } else if (stats.isDirectory()) { resolve(exports.copy(srcFile, targetFolder)); } else { resolve(copyFile(srcFile, targetFolder)); } }); })))); } }); })); }); exports.copyOutDirectory = (srcDir, fn) => new Promise((resolve, reject) => { debug('copyOutDirectory', srcDir); tmp_1.dir((err, path, cleanupCallback) => __awaiter(void 0, void 0, void 0, function* () { if (err) { cleanupCallback(); reject(err); } else { const targetDir = path_1.join(path, path_1.basename(srcDir)); try { debug('we need to copy out of the asar', srcDir, path); yield exports.copy(srcDir, path); debug('copy-out of complete'); if (fn) { resolve(yield fn(targetDir)); } else { resolve(targetDir); } } catch (err) { reject(err); } finally { if (fn) { yield fs_extra_1.remove(targetDir); cleanupCallback(); } } } })); }); exports.copyOutFile = (src) => new Promise((resolve, reject) => { debug('copyOutFile', src); tmp_1.file((err, path, fd, cleanupCallback) => __awaiter(void 0, void 0, void 0, function* () { if (err) { cleanupCallback(); reject(err); } else { yield copyFile(src, path); resolve(path); } })); }); exports.copyOut = (src, fn) => __awaiter(void 0, void 0, void 0, function* () { if (yield util_1.isDirectory(src)) { return exports.copyOutDirectory(src, fn); } else { return exports.copyOutFile(src); } }); //# sourceMappingURL=copy.js.map