generate-clients.mjs 894 B

1234567891011121314151617181920212223242526272829
  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. anchorTraits: false,
  25. })
  26. );