| 1234567891011121314151617181920212223242526272829303132333435363738 |
- #!/usr/bin/env -S node
- const path = require('node:path');
- const process = require('node:process');
- const { rootNode } = require('@kinobi-so/nodes');
- const { rootNodeFromAnchor } = require('@kinobi-so/nodes-from-anchor');
- const { readJson } = require('@kinobi-so/renderers-core');
- const { visit } = require('@kinobi-so/visitors-core');
- const { renderVisitor } = require('../dist/index.node.cjs');
- async function main() {
- const project = process.argv.slice(2)[0] ?? undefined;
- if (project === undefined) {
- throw new Error('Project name is required.');
- }
- await generateProject(project);
- }
- async function generateProject(project) {
- const idl = readJson(path.join(__dirname, project, 'idl.json'));
- let node;
- if (idl?.metadata?.spec) {
- node = rootNodeFromAnchor(idl);
- } else {
- node = rootNode(idl.program, idl.additionalPrograms);
- }
- await visit(node, renderVisitor(path.join(__dirname, project, 'src', 'generated')));
- }
- main().catch(err => {
- console.error(err);
- process.exit(1);
- });
|