UNPKG

@riddance/env

Version:

46 lines 5.83 kB
import { exec } from 'node:child_process'; import { stat } from 'node:fs/promises'; import { join } from 'node:path'; export async function install(reporter, path) { reporter.status('Updating packages...'); const success = (await npmInstall(path)) && (await npmInstall(join(path, 'example'))); reporter.status('Packages updated.'); return success; } async function npmInstall(path) { try { await stat(path); } catch (e) { if (isFileNotFound(e)) { return true; } throw e; } const exitCode = await new Promise((resolve, reject) => { const proc = exec('npm install --no-optional', { cwd: path }, err => { if (err) { reject(err); } proc.stdout?.pipe(process.stdout); proc.stderr?.pipe(process.stderr); }); const onError = (error) => { reject(error); proc.removeListener('error', onError); proc.removeListener('exit', onExit); }; const onExit = (code) => { resolve(code); proc.removeListener('error', onError); proc.removeListener('exit', onExit); }; proc.addListener('error', onError); proc.addListener('exit', onExit); }); return exitCode === 0; } function isFileNotFound(e) { return e.code === 'ENOENT'; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibnBtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUdoQyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxRQUFrQixFQUFFLElBQVk7SUFDMUQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JGLFFBQVEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUNwQyxPQUFPLE9BQU8sQ0FBQTtBQUNsQixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxJQUFZO0lBQ2xDLElBQUksQ0FBQztRQUNELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7UUFDRCxNQUFNLENBQUMsQ0FBQTtJQUNYLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksT0FBTyxDQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDaEUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDTixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDZixDQUFDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQyxDQUFDLENBQUMsQ0FBQTtRQUNGLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFBO1FBQ0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFtQixFQUFFLEVBQUU7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDcEMsQ0FBQyxDQUFDLENBQUE7SUFDRixPQUFPLFFBQVEsS0FBSyxDQUFDLENBQUE7QUFDekIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLENBQVU7SUFDOUIsT0FBUSxDQUF1QixDQUFDLElBQUksS0FBSyxRQUFRLENBQUE7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgeyBzdGF0IH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBSZXBvcnRlciB9IGZyb20gJy4vcmVwb3J0ZXIuanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsKHJlcG9ydGVyOiBSZXBvcnRlciwgcGF0aDogc3RyaW5nKSB7XG4gICAgcmVwb3J0ZXIuc3RhdHVzKCdVcGRhdGluZyBwYWNrYWdlcy4uLicpXG4gICAgY29uc3Qgc3VjY2VzcyA9IChhd2FpdCBucG1JbnN0YWxsKHBhdGgpKSAmJiAoYXdhaXQgbnBtSW5zdGFsbChqb2luKHBhdGgsICdleGFtcGxlJykpKVxuICAgIHJlcG9ydGVyLnN0YXR1cygnUGFja2FnZXMgdXBkYXRlZC4nKVxuICAgIHJldHVybiBzdWNjZXNzXG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5wbUluc3RhbGwocGF0aDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc3RhdChwYXRoKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGlzRmlsZU5vdEZvdW5kKGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVcbiAgICB9XG4gICAgY29uc3QgZXhpdENvZGUgPSBhd2FpdCBuZXcgUHJvbWlzZTxudW1iZXIgfCBudWxsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2MgPSBleGVjKCducG0gaW5zdGFsbCAtLW5vLW9wdGlvbmFsJywgeyBjd2Q6IHBhdGggfSwgZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvYy5zdGRvdXQ/LnBpcGUocHJvY2Vzcy5zdGRvdXQpXG4gICAgICAgICAgICBwcm9jLnN0ZGVycj8ucGlwZShwcm9jZXNzLnN0ZGVycilcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICAgIHByb2MucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcilcbiAgICAgICAgICAgIHByb2MucmVtb3ZlTGlzdGVuZXIoJ2V4aXQnLCBvbkV4aXQpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb25FeGl0ID0gKGNvZGU6IG51bWJlciB8IG51bGwpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoY29kZSlcbiAgICAgICAgICAgIHByb2MucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcilcbiAgICAgICAgICAgIHByb2MucmVtb3ZlTGlzdGVuZXIoJ2V4aXQnLCBvbkV4aXQpXG4gICAgICAgIH1cbiAgICAgICAgcHJvYy5hZGRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKVxuICAgICAgICBwcm9jLmFkZExpc3RlbmVyKCdleGl0Jywgb25FeGl0KVxuICAgIH0pXG4gICAgcmV0dXJuIGV4aXRDb2RlID09PSAwXG59XG5cbmZ1bmN0aW9uIGlzRmlsZU5vdEZvdW5kKGU6IHVua25vd24pIHtcbiAgICByZXR1cm4gKGUgYXMgeyBjb2RlOiB1bmtub3duIH0pLmNvZGUgPT09ICdFTk9FTlQnXG59XG4iXX0=