o1-labs / zkapp-cli

CLI to create a zkApp (zero-knowledge app) for Mina Protocol
https://docs.minaprotocol.com/zkapps/how-to-write-a-zkapp
Apache License 2.0
114 stars 43 forks source link

[Feature Request] Improve error messages for invalid commands #568

Closed MartinMinkov closed 6 months ago

MartinMinkov commented 7 months ago

Describe the problem

When using an invalid command (e.g. invalid spelling), we get an unhelpful error message

~ > zk lighnet status
/home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/o1js/dist/node/bindings/compiled/_node_bindings/o1js_node.bc.cjs:6799
         throw err;
         ^

TypeError: Cannot read properties of undefined (reading 'indexOf')
    at Y18N.__n (/home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/y18n/build/index.cjs:84:18)
    at Object.unknownCommands (/home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/yargs/build/index.cjs:1:54285)
    at /home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/yargs/build/index.cjs:1:60077
    at /home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/yargs/build/index.cjs:1:49759
    at j (/home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/yargs/build/index.cjs:1:4956)
    at [validateAsync] (/home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/yargs/build/index.cjs:1:49750)
    at [runYargsParserAndExecuteCommands] (/home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/yargs/build/index.cjs:1:59673)
    at te.parse (/home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/yargs/build/index.cjs:1:40478)
    at te.get [as argv] (/home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/node_modules/yargs/build/index.cjs:1:62028)
    at file:///home/martin/.nvm/versions/node/v20.1.0/lib/node_modules/zkapp-cli/src/bin/index.js:329:4

Node.js v20.1.0

Notice how lightnet is misspelled as lighnet.

Describe the proposed solution

A helpful user error message should indicate that the command is not registered/recognized. It would lead to much better DX, should an error is to happen.

Alternatives considered

No response

Importance

would make my life easier

Additional Information

No response

ymekuria commented 7 months ago

Thanks for adding this issue @MartinMinkov! This unhelpful error message has been bugging me for awhile. I'll add it to the list of improvements to made for v1 in the category of better error handling and messages.

barriebyron commented 7 months ago

I love error messages and am up for reviewing

We now have error message writing guidance https://github.com/o1-labs/docs2/wiki/zError-Messages