UNPKG

@tripsnek/tmf

Version:

TypeScript Modeling Framework - A TypeScript port of the Eclipse Modeling Framework (EMF)

69 lines (65 loc) 6.67 kB
#!/usr/bin/env node import { genmodel } from '../index.js'; import { parseArgs } from 'node:util'; const { values, positionals } = parseArgs({ args: process.argv.slice(2), options: { help: { type: 'boolean', short: 'h', }, output: { type: 'string', short: 'o', }, 'overwrite-impl': { type: 'boolean', }, format: { type: 'string', }, }, allowPositionals: true, }); if (values.help) { console.log(` TMF Code Generator Usage: npx @tripsnek/tmf <ecore-file> [options] Arguments: <ecore-file> Path to the .ecore file to process Options: -h, --help Show this help message -o, --output Output directory (default: same as ecore file) --overwrite-impl Overwrite existing implementation files --format Format output with specified tool (e.g., 'prettier') Examples: npx @tripsnek/tmf ./lib/data-model/model.ecore npx @tripsnek/tmf model.ecore -o ./generated npx @tripsnek/tmf model.ecore --overwrite-impl --format prettier `); process.exit(0); } const ecoreFile = positionals[0]; if (!ecoreFile) { console.error('Error: Please provide an .ecore file path'); console.error('Run with --help for usage information'); process.exit(1); } try { const options = { attemptFormatWithPrettier: values.format === 'prettier', }; if (values.output !== undefined) { options.destinationPath = values.output; } if (values['overwrite-impl'] !== undefined) { options.overwriteImpl = values['overwrite-impl']; } const outputPath = await genmodel(ecoreFile, options); console.log(`✅ Generated TypeScript code at: ${outputPath}`); } catch (error) { console.error('❌ Generation failed:', error.message); process.exit(1); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG1mLWdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vdG1mLWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQ3hDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0IsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsR0FBRztTQUNYO1FBQ0QsTUFBTSxFQUFFO1lBQ04sSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsR0FBRztTQUNYO1FBQ0QsZ0JBQWdCLEVBQUU7WUFDaEIsSUFBSSxFQUFFLFNBQVM7U0FDaEI7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsUUFBUTtTQUNmO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRSxJQUFJO0NBQ3ZCLENBQUMsQ0FBQztBQUVILElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCYixDQUFDLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFakMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQzNELE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUN2RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxJQUFJLENBQUM7SUFDSCxNQUFNLE9BQU8sR0FBUTtRQUNuQix5QkFBeUIsRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVU7S0FDeEQsQ0FBQztJQUVGLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDM0MsT0FBTyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXRELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7SUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFHLEtBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXHJcblxyXG5pbXBvcnQgeyBnZW5tb2RlbCB9IGZyb20gJy4uL2luZGV4LmpzJztcclxuaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSAnbm9kZTp1dGlsJztcclxuXHJcbmNvbnN0IHsgdmFsdWVzLCBwb3NpdGlvbmFscyB9ID0gcGFyc2VBcmdzKHtcclxuICBhcmdzOiBwcm9jZXNzLmFyZ3Yuc2xpY2UoMiksXHJcbiAgb3B0aW9uczoge1xyXG4gICAgaGVscDoge1xyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIHNob3J0OiAnaCcsXHJcbiAgICB9LFxyXG4gICAgb3V0cHV0OiB7XHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBzaG9ydDogJ28nLFxyXG4gICAgfSxcclxuICAgICdvdmVyd3JpdGUtaW1wbCc6IHtcclxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgfSxcclxuICAgIGZvcm1hdDoge1xyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgIH0sXHJcbiAgfSxcclxuICBhbGxvd1Bvc2l0aW9uYWxzOiB0cnVlLFxyXG59KTtcclxuXHJcbmlmICh2YWx1ZXMuaGVscCkge1xyXG4gIGNvbnNvbGUubG9nKGBcclxuVE1GIENvZGUgR2VuZXJhdG9yXHJcblxyXG5Vc2FnZTogbnB4IEB0cmlwc25lay90bWYgPGVjb3JlLWZpbGU+IFtvcHRpb25zXVxyXG5cclxuQXJndW1lbnRzOlxyXG4gIDxlY29yZS1maWxlPiAgICAgICAgUGF0aCB0byB0aGUgLmVjb3JlIGZpbGUgdG8gcHJvY2Vzc1xyXG5cclxuT3B0aW9uczpcclxuICAtaCwgLS1oZWxwICAgICAgICAgU2hvdyB0aGlzIGhlbHAgbWVzc2FnZVxyXG4gIC1vLCAtLW91dHB1dCAgICAgICBPdXRwdXQgZGlyZWN0b3J5IChkZWZhdWx0OiBzYW1lIGFzIGVjb3JlIGZpbGUpXHJcbiAgLS1vdmVyd3JpdGUtaW1wbCAgIE92ZXJ3cml0ZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBmaWxlc1xyXG4gIC0tZm9ybWF0ICAgICAgICAgICBGb3JtYXQgb3V0cHV0IHdpdGggc3BlY2lmaWVkIHRvb2wgKGUuZy4sICdwcmV0dGllcicpXHJcblxyXG5FeGFtcGxlczpcclxuICBucHggQHRyaXBzbmVrL3RtZiAuL2xpYi9kYXRhLW1vZGVsL21vZGVsLmVjb3JlXHJcbiAgbnB4IEB0cmlwc25lay90bWYgbW9kZWwuZWNvcmUgLW8gLi9nZW5lcmF0ZWRcclxuICBucHggQHRyaXBzbmVrL3RtZiBtb2RlbC5lY29yZSAtLW92ZXJ3cml0ZS1pbXBsIC0tZm9ybWF0IHByZXR0aWVyXHJcbmApO1xyXG4gIHByb2Nlc3MuZXhpdCgwKTtcclxufVxyXG5cclxuY29uc3QgZWNvcmVGaWxlID0gcG9zaXRpb25hbHNbMF07XHJcblxyXG5pZiAoIWVjb3JlRmlsZSkge1xyXG4gIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBQbGVhc2UgcHJvdmlkZSBhbiAuZWNvcmUgZmlsZSBwYXRoJyk7XHJcbiAgY29uc29sZS5lcnJvcignUnVuIHdpdGggLS1oZWxwIGZvciB1c2FnZSBpbmZvcm1hdGlvbicpO1xyXG4gIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxudHJ5IHtcclxuICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XHJcbiAgICBhdHRlbXB0Rm9ybWF0V2l0aFByZXR0aWVyOiB2YWx1ZXMuZm9ybWF0ID09PSAncHJldHRpZXInLFxyXG4gIH07XHJcbiAgXHJcbiAgaWYgKHZhbHVlcy5vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgb3B0aW9ucy5kZXN0aW5hdGlvblBhdGggPSB2YWx1ZXMub3V0cHV0O1xyXG4gIH1cclxuICBcclxuICBpZiAodmFsdWVzWydvdmVyd3JpdGUtaW1wbCddICE9PSB1bmRlZmluZWQpIHtcclxuICAgIG9wdGlvbnMub3ZlcndyaXRlSW1wbCA9IHZhbHVlc1snb3ZlcndyaXRlLWltcGwnXTtcclxuICB9XHJcbiAgXHJcbiAgY29uc3Qgb3V0cHV0UGF0aCA9IGF3YWl0IGdlbm1vZGVsKGVjb3JlRmlsZSwgb3B0aW9ucyk7XHJcbiAgXHJcbiAgY29uc29sZS5sb2coYOKchSBHZW5lcmF0ZWQgVHlwZVNjcmlwdCBjb2RlIGF0OiAke291dHB1dFBhdGh9YCk7XHJcbn0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgY29uc29sZS5lcnJvcign4p2MIEdlbmVyYXRpb24gZmFpbGVkOicsIChlcnJvciBhcyBFcnJvcikubWVzc2FnZSk7XHJcbiAgcHJvY2Vzcy5leGl0KDEpO1xyXG59Il19