-
Notifications
You must be signed in to change notification settings - Fork 188
Add the bases for making prompt commands plugin based #720
Conversation
Signed-off-by: Guillaume George <lysandergc@gmail.com>
f73f22a
to
3aee33c
Compare
Looks great! |
@LysanderGG If this is implemented, I would like to help migrate the commands and tests. Perhaps we can cooperate to accomplish the goal? |
@jseagrave21 Yes we should be able to split the work once this PR is merged |
I've played around a bit with the code seeing if I could implement the So the initial idea of registering a subcommand I thought perhaps inheriting from a base command (i.e. I ended up with the preliminary approach in the link but it feels messy as that would put all markup/alignment responsibility with the class inheriting from |
Thank you for having tried this! Here are a few ideas:
I think I didn't understand this part.
|
I followed up on 1 and 2 (result) if I understood you correctly. Works well so far as I've tested it. In summary I did the following things
Now having done this I think we might want to refactor |
Thank you for this! The points 1 and 2 were different ideas to solve the same problem, maybe it wasn't clear in my previous message, sorry.
This is not what I meant, I was suggesting to have But with the
Absolutely! However it should also have a free text variable imo, I would suggest
Last thing, about the point 3: Now that I re-read my previous message, I can see it was confusing.
I think it could be handled as follows in
We wouldn't need to return a boolean any more because we would be sure that the last argument was I hope this message is less confusing 😅 |
Pushed it a bit more forward again. After I took a short walk and thought why not add a Yeah I wasn't too happy yet with the Finally, I'm not sure yet where and how to call upon the long
If that isn't clear enough, then perhaps we might want to call upon |
I would suggest to do without I think we've reached a good enough state, thank you for your help! How shall we proceed now? |
Sounds good! |
Signed-off-by: Guillaume George <lysandergc@gmail.com>
Signed-off-by: Guillaume George <lysandergc@gmail.com>
e592858 moves the detection of help to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple of last touches such that we have a clean start where others can help migrate. Thanks for picking this issue up, this is going to be a good first step in cleaning up and improving usability/user experience 👍
I just took a moment to think about how to group all available commands and have a suggestion posted here: #623 (comment) One thing I noticed is that we might want a 3rd level subcommand 🤔 If you look at the above proposal we might have wanted the following
instead we're now forced to have
similarly for |
Signed-off-by: Guillaume George <lysandergc@gmail.com>
Signed-off-by: Guillaume George <lysandergc@gmail.com>
I fixed the points you raised and moved About the 3rd level of subcommands, I went ahead and remove I made the necessssary functions recursive and added a Here is for the sake of and example the console output when I put Please let me know what you think :) |
💯 |
Thank you for your help and reviews! |
* Add the bases for making prompt commands plugin based (#720) * WIP make prompt commands plugin based Signed-off-by: Guillaume George <lysandergc@gmail.com> * Merge ixje:refactor-prompt Signed-off-by: Guillaume George <lysandergc@gmail.com> * Handle help detection in prompt.py Signed-off-by: Guillaume George <lysandergc@gmail.com> * Use CommandBase for subcommands to be able to have N levels of commands. Signed-off-by: Guillaume George <lysandergc@gmail.com> * Move "create wallet" command into "wallet" Signed-off-by: Guillaume George <lysandergc@gmail.com> * Improve CommandBase.register_sub_command to use the subcommand's CommandDesc.command as an id. (#725) Signed-off-by: Guillaume George <lysandergc@gmail.com> * Fix 1 word commands (#727) * Improve CommandBase.register_sub_command to use the subcommand's CommandDesc.command as an id. Signed-off-by: Guillaume George <lysandergc@gmail.com> * Fix exception when a command was used without arguments (for example "wallet") Signed-off-by: Guillaume George <lysandergc@gmail.com> * Add support for `wallet` `send`, `sendmany`, `sign`, `open`, and `close` (#726) * Prompt cleanup (#730) * Update description and clarify debug logs * Make return's explicit, clarify multi-sig help message * cleanup prompt * remove colour from initial help, sort commands alphabetically, cleanup descriptions * fix linting * process feedback * [refactor-prompt] Prompt fixes (#732) * Improve CommandBase.register_sub_command to use the subcommand's CommandDesc.command as an id. Signed-off-by: Guillaume George <lysandergc@gmail.com> * Fix CommandWalletCreateAddress missing parameter desc Signed-off-by: Guillaume George <lysandergc@gmail.com> * Fix missing words for autocompletion Signed-off-by: Guillaume George <lysandergc@gmail.com> * [refactor-prompt] Add missing tests for wallet create, verbose and create_addr (#733) * Add missing tests for wallet create, verbose and create_addr Signed-off-by: Guillaume George <lysandergc@gmail.com> * fix reviews Signed-off-by: Guillaume George <lysandergc@gmail.com> * [refactor prompt] Add support for search method group (#739) * [refactor prompt] Add support for show method group (pt 1) (#738) * Fix NodeLeader was not reset between test cases. (#742) This would lead to some problems when the blockchain is reset but the NodeLeader instance members are not. Transactions were still considered as known. Some members were not reset in NodeLeader.Setup() Also removed unsued member NodeLeader.MissionsGlobal Signed-off-by: Guillaume George <lysandergc@gmail.com> * Migrate command: wallet rebuild (#747) Signed-off-by: Guillaume George <lysandergc@gmail.com> * remove deprecated migrate command * remove deprecated migrate command (#748) * [refactor prompt] Add support for show method group (pt 2) (#741) * [refactor-prompt] Implement CommandWalletClaimGas (#740) * [refactor-prompt] Add wallet token base + delete (#757) * [refactor-prompt] Migrate command: wallet delete_addr (#752) * Migrate command: wallet delete_addr Signed-off-by: Guillaume George <lysandergc@gmail.com> * UserWallet.DeleteAddress now returns False on error + proper handling of invalid addresses in CommandWalletDeleteAddress Signed-off-by: Guillaume George <lysandergc@gmail.com> * Migrate command: wallet alias (#753) Signed-off-by: Guillaume George <lysandergc@gmail.com> * [refactor-prompt] Add wallet token send (#758) * remove deprecated migrate command * Add wallet token send * Update requirements and use isValidPublicAddress from new neo-python-core version * - fix send token description - process feedback * fix doc string typo * [refactor prompt] Add support for config group pt1 (#759) * add wallet import nep2/wif (#765) * [refactor-prompt] add wallet token history (#763) * Add wallet token history * process feedback * fix broken test after base branch merge * [refactor-prompt] add wallet export commands (#764) * add wallet export commands * Fix export nep2 to ask for passwords to prevent pw leaking to logs * process feedback * [refactor-prompt] add wallet import watchaddr (#766) * [refactor-prompt] add token sendfrom (#761) * [refactor-prompt] add import multisig_addr (#767) * add import multsig address * remove obsolete function * [refactor-prompt] Migrate command: wallet unspent (#760) * migrate command: wallet unspent Signed-off-by: Guillaume George <lysandergc@gmail.com> * wallet unspent - add tests Signed-off-by: Guillaume George <lysandergc@gmail.com> * fix arguments names and missing doc Signed-off-by: Guillaume George <lysandergc@gmail.com> * Handle review: add feedback when there is no asset matching the arguments + use neocore.Utils.isValidPublicAddress Signed-off-by: Guillaume George <lysandergc@gmail.com> * [refactor prompt] Add support for config maxpeers (#762) * add token approve and token allowance (#769) * add config nep8 (#771) * [refactor-prompt] Migrate command: wallet split (#770) * Migrate command wallet split Signed-off-by: Guillaume George <lysandergc@gmail.com> * Fix some comments Signed-off-by: Guillaume George <lysandergc@gmail.com> * Fix command desc + remove print() calls committed by mistake Signed-off-by: Guillaume George <lysandergc@gmail.com> * Add tests for CommandWalletSplit Signed-off-by: Guillaume George <lysandergc@gmail.com> * Review: test_wallet_split use string arguments instead of ints Signed-off-by: Guillaume George <lysandergc@gmail.com> * Handle Reviews - handle negative fees, improve error messages Signed-off-by: Guillaume George <lysandergc@gmail.com> * add token mint (#773) * [refactor prompt] Fix `search asset` and `search contract` (#774) * Update prompt.py - add CommandShow and CommandSearch to prompt * Update prompt.py revert changes * Update Search.py - update `search contract` and `search asset` per #623 (comment) * Update test_search_commands.py - add tests in case no search parameter is provided * add token register (#775) * [refactor-prompt] Migrate command: wallet import token (#772) * test_wallet_commands.py: Move tests of non commands at the end Signed-off-by: Guillaume George <lysandergc@gmail.com> * Add wallet import token Signed-off-by: Guillaume George <lysandergc@gmail.com> * Review: return None implicitly where possible Signed-off-by: Guillaume George <lysandergc@gmail.com> * Add a few tests for SplitUnspentCoin() Signed-off-by: Guillaume George <lysandergc@gmail.com> * CommandWalletImportToken - Handle review: better validation of contract_hash Signed-off-by: Guillaume George <lysandergc@gmail.com> * Add wallet import contract_addr (#777) Signed-off-by: Guillaume George <lysandergc@gmail.com> * split prompt wallet into multiple files (#782) * [refactor-prompt] add support for the sc group including build, build_run, and load_run (#779) * [refactor-prompt] cleanup 2 (#783) * make base command response consistent * fix plurality * check input parameters before closing wallet * streamline missing arguments response streamline accepted boolean options for config * process feedback * [refactor-prompt] add debugstorage command (#784) * add debugstorage command (and fix auto save linting error) * correct comments * [refactor-prompt] add sc deploy (#785) * add sc deploy (previously known as; import contract) * process feedback * [refactor-prompt] add sc invoke (#786) * add sc invoke (previously known as testinvoke) * process feedback * streamline parameter descriptions (#787) * add wallet password checking before exporting (#790) * fix exception in help if command has no params (#792) * [refactor-prompt] enforce pw prompt send (#791) * remove password bypass * remove unused import * [refactor-prompt] update docs (#789) * update global readme * update docs * process feedback * update show contract output * [refactor-prompt] restore theming support (#788) * re-store theming support * fix comment * improve wallet usage help (#794) * clarify insufficient funds error message due to not enough unspent outputs (#793) * fix prompt printer for lists and other possible objects (#795) * Fix send/sendmany default wallet source address for tx (#796) * [refactor-prompt] Improve send & sendmany (third try) (#799) * Update Send.py * Update test_send_command.py * rename test_send_command.py as test_send_commands.py * [refactor-prompt] Fix #800 (#802) * Update prompt.py - add CommandShow and CommandSearch to prompt * Update prompt.py revert changes * Fix #800 - adds support for contracts not requiring params * fix calculation of change value when using alternating asset inputs (#803) * test print fix * oops * test again * update makefile * update changelog to trigger stuck build
What current issue(s) does this address, or what feature is it adding?
#623
How did you solve this problem?
This PR adds base classes for prompt commands and subcommands.
It also adds a few implementations to be sure the system is working:
This PR/branch will be quite big, so it is intended to be kept the simplest possible so the behaviour of the prompt and commands should not be changed in this PR/branch.
How did you make sure your solution works?
The prompt commands should all work as before.
Are there any special changes in the code that we should be aware of?
Not particularly.
Please check the following, if applicable:
make lint
?make test
?CHANGELOG.rst
? (if not, please do)What is left to do?
This PR is intended to put the bases for the refactoring.
Once this PR is merged, the following things are left to do.
What can be done after?
help
, subcommands listing withcommand help
and detailed help withcommand subcommand help
(help
could be the first word if we want).import
, we should not suggestcreate_addr
.What I would like to be reviewed:
If possible, once the base is validated, I'd prefer to make several small PRs with a few classes at a time so it's easier and quicker to review and merge.
I am open to comments and suggestions!