generate-clients.mjs 869 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/env zx
  2. import 'zx/globals';
  3. import { createFromRoot } from 'codama';
  4. import { renderVisitor as renderJavaScriptVisitor } from '@codama/renderers-js';
  5. import { renderVisitor as renderRustVisitor } from '@codama/renderers-rust';
  6. import { workingDirectory } from './utils.mjs';
  7. // Instanciate Codama.
  8. const codama = createFromRoot(
  9. require(path.join(workingDirectory, 'program', 'idl.json'))
  10. );
  11. // Render JavaScript.
  12. const jsClient = path.join(__dirname, '..', 'clients', 'js');
  13. codama.accept(
  14. renderJavaScriptVisitor(path.join(jsClient, 'src', 'generated'), {
  15. prettier: require(path.join(jsClient, '.prettierrc.json')),
  16. })
  17. );
  18. // Render Rust.
  19. const rustClient = path.join(__dirname, '..', 'clients', 'rust');
  20. codama.accept(
  21. renderRustVisitor(path.join(rustClient, 'src', 'generated'), {
  22. formatCode: true,
  23. crateFolder: rustClient,
  24. })
  25. );