diff --git a/.changeset/fix-convert-package-json.md b/.changeset/fix-convert-package-json.md new file mode 100644 index 000000000..d9f5ffbe1 --- /dev/null +++ b/.changeset/fix-convert-package-json.md @@ -0,0 +1,5 @@ +--- +"@codama/cli": patch +--- + +Allow convert command to work without package.json diff --git a/packages/cli/package.json b/packages/cli/package.json index e4877fd20..843192159 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -41,6 +41,7 @@ }, "dependencies": { "@codama/nodes": "workspace:*", + "@codama/nodes-from-anchor": "workspace:*", "@codama/visitors": "workspace:*", "@codama/visitors-core": "workspace:*", "commander": "^14.0.2", diff --git a/packages/cli/src/utils/nodes.ts b/packages/cli/src/utils/nodes.ts index e2c984c03..cf92764ae 100644 --- a/packages/cli/src/utils/nodes.ts +++ b/packages/cli/src/utils/nodes.ts @@ -12,6 +12,17 @@ export async function getRootNodeFromIdl(idl: unknown): Promise { return idl; } + // Try direct import first — works without a package.json. + try { + const rootNodeFromAnchor = await importModuleItem<(idl: unknown) => RootNode>({ + from: '@codama/nodes-from-anchor', + item: 'rootNodeFromAnchor', + }); + return rootNodeFromAnchor(idl); + } catch { + // Module not available via direct import. + } + const hasNodesFromAnchor = await installMissingDependencies( 'Anchor IDL detected. Additional dependencies are required to process Anchor IDLs.', ['@codama/nodes-from-anchor'], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68bd45862..5f6baddaf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,6 +59,9 @@ importers: '@codama/nodes': specifier: workspace:* version: link:../nodes + '@codama/nodes-from-anchor': + specifier: workspace:* + version: link:../nodes-from-anchor '@codama/visitors': specifier: workspace:* version: link:../visitors