@code-to-json/cli
Version:
54 lines • 5.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@code-to-json/core");
const formatter_1 = require("@code-to-json/formatter");
const utils_1 = require("@code-to-json/utils");
const utils_node_1 = require("@code-to-json/utils-node");
const utils_ts_1 = require("@code-to-json/utils-ts");
const fs = require("fs");
const path = require("path");
const command_utils_1 = require("../command-utils");
async function generateJSON(options, rawEntries) {
const { project, out = 'out', format } = options;
let program;
let pathNormalizer = utils_ts_1.PASSTHROUGH_REVERSE_RESOLVER;
if (typeof project === 'string') {
// run tool based on tsconfig.json
program = await utils_ts_1.createProgramFromTsConfig(project, utils_node_1.NODE_HOST);
pathNormalizer = await utils_node_1.createReverseResolverForProject(project, utils_node_1.NODE_HOST);
}
else if (!project && rawEntries && rawEntries.length > 0) {
// run tool based on entries
program = await command_utils_1.createProgramFromEntryGlobs(rawEntries);
}
else {
throw new utils_1.InvalidArgumentsError('Either --project <path> or entries glob(s) must be defined');
}
if (['raw', 'both', 'formatted'].indexOf(format) < 0) {
throw new Error(`Invalid --format option: ${format}`);
}
// get the raw result
const walkResult = core_1.walkProgram(program, utils_node_1.NODE_HOST, {
pathNormalizer,
});
const outputPath = path.isAbsolute(out) ? out : path.join(process.cwd(), out);
if (!fs.existsSync(outputPath)) {
fs.mkdirSync(outputPath, { recursive: true });
}
if (format === 'raw' || format === 'both') {
const rawOutputPath = path.join(outputPath, 'raw.json');
// write the raw output file
fs.writeFileSync(rawOutputPath, JSON.stringify(walkResult, null, ' '));
}
if (format === 'formatted' || format === 'both') {
// get the formatted result
const formattedResult = formatter_1.formatWalkerOutput(walkResult);
// determine the appropriate place(s) to write output files
const formattedOutputPath = path.join(outputPath, 'formatted.json');
// create the output folder if it doesn't currently exist
// write the formatted output file
fs.writeFileSync(formattedOutputPath, JSON.stringify(formattedResult, null, ' '));
}
}
exports.default = generateJSON;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtanNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9nZW5lcmF0ZS1qc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQWlEO0FBQ2pELHVEQUE2RDtBQUM3RCwrQ0FBNEQ7QUFDNUQseURBQXNGO0FBQ3RGLHFEQUFpRztBQUNqRyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBRTdCLG9EQUErRDtBQWdCaEQsS0FBSyxVQUFVLFlBQVksQ0FDeEMsT0FBNkIsRUFDN0IsVUFBcUI7SUFFckIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BSXhDLENBQUM7SUFDRixJQUFJLE9BQW9CLENBQUM7SUFDekIsSUFBSSxjQUFjLEdBQUcsdUNBQTRCLENBQUM7SUFFbEQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7UUFDL0Isa0NBQWtDO1FBQ2xDLE9BQU8sR0FBRyxNQUFNLG9DQUF5QixDQUFDLE9BQU8sRUFBRSxzQkFBUyxDQUFDLENBQUM7UUFDOUQsY0FBYyxHQUFHLE1BQU0sNENBQStCLENBQUMsT0FBTyxFQUFFLHNCQUFTLENBQUMsQ0FBQztLQUM1RTtTQUFNLElBQUksQ0FBQyxPQUFPLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzFELDRCQUE0QjtRQUM1QixPQUFPLEdBQUcsTUFBTSwyQ0FBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUN6RDtTQUFNO1FBQ0wsTUFBTSxJQUFJLDZCQUFxQixDQUFDLDREQUE0RCxDQUFDLENBQUM7S0FDL0Y7SUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDdkQ7SUFDRCxxQkFBcUI7SUFDckIsTUFBTSxVQUFVLEdBQUcsa0JBQVcsQ0FBQyxPQUFPLEVBQUUsc0JBQVMsRUFBRTtRQUNqRCxjQUFjO0tBQ2YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUM5QixFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQy9DO0lBQ0QsSUFBSSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUU7UUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEQsNEJBQTRCO1FBQzVCLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3pFO0lBQ0QsSUFBSSxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUU7UUFDL0MsMkJBQTJCO1FBQzNCLE1BQU0sZUFBZSxHQUFHLDhCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELDJEQUEyRDtRQUMzRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDcEUseURBQXlEO1FBQ3pELGtDQUFrQztRQUNsQyxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3BGO0FBQ0gsQ0FBQztBQWhERCwrQkFnREMifQ==