osr-mono/packages/osr-cli-commons/lib/each.js
2025-01-29 17:48:22 +01:00

99 lines
11 KiB
JavaScript

"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.each = exports.yargsOptions = exports.zodSchema = void 0;
const zod_1 = require("zod");
const path = require("path");
const pMap = require("p-map");
const primitives_1 = require("@plastichub/core/primitives");
const read_1 = require("@plastichub/fs/read");
const exists_1 = require("@plastichub/fs/exists");
const write_1 = require("@plastichub/fs/write");
const dir_1 = require("@plastichub/fs/dir");
const config_1 = require("@plastichub/osr-commons/config");
const _1 = require("./");
const osr_commons_1 = require("@plastichub/osr-commons");
const osr_commons_2 = require("@plastichub/osr-commons");
const profile_1 = require("@plastichub/osr-commons/profile");
const process_1 = require("../lib/process");
const __1 = require("../");
const zodSchema = () => zod_1.z.object({
logLevel: zod_1.z.string().default('info'),
main: zod_1.z.string(),
log: zod_1.z.string().optional(),
list: zod_1.z.string(),
root: zod_1.z.string().optional().describe('the root directory to use, otherwise default roots are being assumed'),
cwd: zod_1.z.string().optional().describe('the current working directory to use, otherwise . is being assumed'),
trace: zod_1.z.boolean().default(false),
env: zod_1.z.string().default(''),
profile: zod_1.z.string().default('${OSR_ROOT}/osr-templates/osrl/.osrl.json')
}, { description: 'IOptionsEach' });
exports.zodSchema = zodSchema;
const yargsOptions = (yargs) => (0, osr_commons_1.toYargs)(yargs, (0, exports.zodSchema)());
exports.yargsOptions = yargsOptions;
const each = (opts) => __awaiter(void 0, void 0, void 0, function* () {
__1.logger.setSettings({ minLevel: opts.logLevel });
let items = [];
let listPath = path.resolve((0, osr_commons_1.resolve)(opts.list));
let list = null;
try {
list = yield (0, _1.parseCustomUrl)(opts.list);
}
catch (e) {
__1.logger.debug(`Error parsing list: ${opts.list}`, e.message);
}
if ((0, primitives_1.isArray)(list)) {
items = list;
}
else if ((0, exists_1.sync)(listPath) && (0, osr_commons_1.isFile)(listPath) && path.parse(listPath).ext === '.json') {
items = (0, read_1.sync)(listPath, 'json') || [];
}
else if ((0, osr_commons_2.pathInfo)(opts.list).IS_GLOB) {
items = (0, osr_commons_2.filesEx)(opts.cwd ? path.resolve((0, osr_commons_1.resolve)(opts.cwd)) : null, opts.list, {
absolute: false
}) || [].map((item) => (0, osr_commons_2.forward_slash)(item));
}
if (!items || items.length === 0) {
__1.logger.error('osr-cli::each: invalid list or empty list');
return;
}
items = items.filter((item) => !!item);
__1.logger.debug(`listPath: ${listPath} : ${items.length} items`, items);
const profile = (0, profile_1.parseProfile)(opts.profile, { variables: {}, includes: [], env: {} }, { env: opts.env });
const patchArgs = (obj, changeValueFn) => {
const ret = Object.assign({}, obj);
for (const key in ret) {
if ((0, primitives_1.isString)(ret[key])) {
ret[key] = changeValueFn(ret[key]);
}
}
[...Object.keys((0, exports.zodSchema)().shape), '_', '$0'].forEach((key) => delete ret[key]);
return ret;
};
const all = yield pMap(items, (KEY) => __awaiter(void 0, void 0, void 0, function* () {
const variables = Object.assign(Object.assign(Object.assign(Object.assign({ KEY }, config_1.DEFAULT_ROOTS), profile.variables), (0, exists_1.sync)(KEY) ? path.parse(KEY) : {}), { REL: (0, osr_commons_2.forward_slash)(KEY) });
let args = patchArgs(opts, (value) => (0, osr_commons_1.substitute)(false, value, variables));
args = Object.keys(args).map((k) => args[k] ? `--${k}="${args[k]}"` : '').filter(Boolean);
args = args.filter((element) => !!element);
const cmd = (0, osr_commons_1.substitute)(false, opts.main, variables);
const cwd = path.resolve((0, osr_commons_1.substitute)(false, opts.cwd || '', variables));
if (!(0, exists_1.sync)(cwd)) {
__1.logger.warn(`cwd does not exist: ${cwd}`);
(0, dir_1.sync)(cwd);
}
__1.logger.info(`running ${cmd} in ${cwd}`, args);
return yield process_1.Helper.run(cwd, cmd, [], [], opts.trace);
}), { concurrency: 1 });
opts.log && (0, write_1.sync)(path.resolve((0, osr_commons_1.resolve)(opts.log)), all);
return all;
});
exports.each = each;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9saWIvZWFjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2QkFBdUI7QUFHdkIsNkJBQTRCO0FBQzVCLDhCQUE2QjtBQUU3Qiw0REFBK0Q7QUFDL0QsOENBQWtEO0FBQ2xELGtEQUFzRDtBQUN0RCxnREFBb0Q7QUFDcEQsNENBQWtEO0FBQ2xELDJEQUE4RDtBQUM5RCx5QkFBbUM7QUFDbkMseURBQThFO0FBQzlFLHlEQUFvRjtBQUNwRiw2REFBOEQ7QUFDOUQsNENBQXVDO0FBRXZDLDJCQUE0QjtBQUVyQixNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMxQixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxzRUFBc0UsQ0FBQztJQUM1RyxHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvRUFBb0UsQ0FBQztJQUN6RyxLQUFLLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDakMsR0FBRyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQzNCLE9BQU8sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDO0NBQzNFLEVBQUUs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