UNPKG

@summarisation/fileutils

Version:

fileutils for summarisation

80 lines (79 loc) 3.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeRecursivelyCmdChanges = exports.executeRecursivelyInChildDirectories = exports.execute = exports.executeScriptInShell = exports.isSuccessfulShellResult = void 0; const utils_1 = require("@laoban/utils"); const files_1 = require("./files"); const child_process_1 = __importDefault(require("child_process")); function isSuccessfulShellResult(t) { return t.code === 0; } exports.isSuccessfulShellResult = isSuccessfulShellResult; const executeScriptInShell = (cwd, cmd, config) => { let { encoding = 'utf8', debug } = config; if (debug) console.log('executeScriptInShell', cwd, cmd.trim()); return new Promise(resolve => { child_process_1.default.exec(cmd, { cwd, env: process.env, encoding }, (error, stdout, stdErr) => { if (debug) console.log('exec - error ', error); if (debug) console.log('exec - stdout', stdout); if (debug) console.log('exec - strError', stdErr); if (stdErr === '' && (error === null || error.code === 0)) resolve({ message: stdout.toString(), code: 0 }); else resolve({ message: stdout.toString(), error: stdErr.toString(), code: error?.code || 0 }); }); }); }; exports.executeScriptInShell = executeScriptInShell; async function execute(cwd, cmd, config = {}) { const { encoding, executeInShell = exports.executeScriptInShell, debug, dryRun } = config; if (debug || dryRun) console.log('execute ', cwd, cmd); if (dryRun) return []; const res = await executeInShell(cwd, cmd, config); if (isSuccessfulShellResult(res)) return res.message; return [res.error]; } exports.execute = execute; async function executeRecursivelyInChildDirectories(cwd, cmds, config) { let executed = 0; let failed = []; for await (const dir of (0, files_1.getDirectoriesRecursively)(cwd)) { try { await execute(dir, cmds, config); executed++; } catch (e) { failed.push(dir); } return { executed, failed }; } } exports.executeRecursivelyInChildDirectories = executeRecursivelyInChildDirectories; async function executeRecursivelyCmdChanges(cwd, startDir, cmdFn, config) { let executed = 0; let failed = []; for await (const dir of (0, files_1.getDirectoriesRecursively)(startDir)) { try { const result = await execute(cwd, cmdFn(dir), config); if ((0, utils_1.hasErrors)(result) && result.length > 0) { failed.push(dir + ' ' + result.join(';')); console.error(result); } executed++; } catch (e) { failed.push(dir); } } return { executed, failed }; } exports.executeRecursivelyCmdChanges = executeRecursivelyCmdChanges;