generate.cjs 973 B

1234567891011121314151617181920212223242526272829303132333435
  1. #!/usr/bin/env -S node
  2. const path = require('node:path');
  3. const process = require('node:process');
  4. const { rootNode } = require('@kinobi-so/nodes');
  5. const { readJson } = require('@kinobi-so/renderers-core');
  6. const { visit } = require('@kinobi-so/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. visit(
  19. node,
  20. renderVisitor(path.join(__dirname, project, 'src', 'generated'), {
  21. crateFolder: path.join(__dirname, project),
  22. formatCode: true,
  23. }),
  24. );
  25. }
  26. main().catch(err => {
  27. console.error(err);
  28. process.exit(1);
  29. });