generate-clients.mjs 923 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env zx
  2. import "zx/globals";
  3. import * as k from "@metaplex-foundation/kinobi";
  4. import { workingDirectory } from "./utils.mjs";
  5. // Instanciate Kinobi.
  6. const kinobi = k.createFromIdls([
  7. path.join(workingDirectory, "program", "idl.json"),
  8. ]);
  9. // Update instructions.
  10. kinobi.update(
  11. k.updateInstructionsVisitor({
  12. createAccount: {
  13. byteDeltas: [k.instructionByteDeltaNode(k.argumentValueNode("space"))],
  14. },
  15. })
  16. );
  17. // Render JavaScript.
  18. const jsClient = path.join(__dirname, "..", "clients", "js");
  19. kinobi.accept(
  20. k.renderJavaScriptExperimentalVisitor(
  21. path.join(jsClient, "src", "generated"),
  22. { prettier: require(path.join(jsClient, ".prettierrc.json")) }
  23. )
  24. );
  25. // Render Rust.
  26. const rustClient = path.join(__dirname, "..", "clients", "rust");
  27. kinobi.accept(
  28. k.renderRustVisitor(path.join(rustClient, "src", "generated"), {
  29. formatCode: true,
  30. crateFolder: rustClient,
  31. })
  32. );