-
Notifications
You must be signed in to change notification settings - Fork 121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
run_script continues after not a recognized command #1209
Comments
run_script is for basic command scripts, which have no logic. They're no more advanced than running multiple command lines in a row. Great for automation, but not for things which can fail. Without added logic, Windows batch files and Bash scripts also don't stop if an invalid command is run. If you need something more powerful, consider using Python scripts with the https://cmd2.readthedocs.io/en/stable/features/scripting.html |
Actually in bash scripting this is exactly what happens. I just tried this out. #/bin/bash echo 'Works' The first and the third commands work like expected and there is an error for the second one. So it doesn't make sense to not show an error but continuation seems perfectly normal |
Closing since |
Bash, for example, continues after an error because the next line can potentially use the exit code of the previous and do something appropriate on error. There is also I am not suggesting cmd2 scripts should have sophisticated error handling features, keeping it simple is best for run_script. But I would humbly suggest that in the absence of error handling, "halt on first error" is the least bad strategy. Your call of course. |
I agree @crotwell in that a |
Closing again since |
Filing as a separate issue, but related to #1185 and #1207. Currently run_script also suffers from not seeing the error caused by a command that doesn't exist. A similar issue happens with unknown or incorrect arguments to a command. This would also occur in startup commands.
For example, with first_app.py, using this as a script
does not stop execution on the second or third command and keeps running. Most users, I think, would expect a script to stop if it encounters an error situation like a command that doesn't exist or badly formed arguments and would be surprised to see "c" printed.
When a command that does not exist is encountered now,
onecmd()
callsdefault()
which just prints a message withperror()
. But this means that neitherruncmds_plus_hooks()
nor_test_transcript()
in transcript.py are aware that the failure situation has occurred and so they continue to the next command.The text was updated successfully, but these errors were encountered: