generate.cjs 848 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/env -S node
  2. const path = require('node:path');
  3. const process = require('node:process');
  4. const { rootNode } = require('@codama/nodes');
  5. const { readJson } = require('@codama/renderers-core');
  6. const { visit } = require('@codama/visitors-core');
  7. const { renderVisitor } = require('../dist/index.node.cjs');
  8. async function main() {
  9. const project = process.argv.slice(2)[0] ?? undefined;
  10. if (project === undefined) {
  11. throw new Error('Project name is required.');
  12. }
  13. await generateProject(project);
  14. }
  15. async function generateProject(project) {
  16. const idl = readJson(path.join(__dirname, project, 'idl.json'));
  17. const node = rootNode(idl.program);
  18. await visit(node, renderVisitor(path.join(__dirname, project, 'src', 'generated')));
  19. }
  20. main().catch(err => {
  21. console.error(err);
  22. process.exit(1);
  23. });