|
9 | 9 | precedence even though it appeared later in the command. |
10 | 10 | * Fixed issue where quotes around redirection file paths were being lost in `Statement.expanded_command_line()` |
11 | 11 | * Fixed a bug in how line numbers were calculated for transcript testing |
| 12 | + * Fixed issue where `_cmdloop()` suppressed exceptions by returning from within its `finally` code |
| 13 | + * Fixed UnsupportedOperation on fileno error when a shell command was one of the commands run while generating |
| 14 | + a transcript |
12 | 15 | * Enhancements |
13 | 16 | * Added capability to chain pipe commands and redirect their output (e.g. !ls -l | grep user | wc -l > out.txt) |
14 | 17 | * `pyscript` limits a command's stdout capture to the same period that redirection does. |
15 | | - Therefore output from a command's postparsing and finalization hooks isn't saved in the StdSim object. |
| 18 | + Therefore output from a command's postparsing and finalization hooks isn't saved in the StdSim object. |
16 | 19 | * `StdSim.buffer.write()` now flushes when the wrapped stream uses line buffering and the bytes being written |
17 | | - contain a newline or carriage return. This helps when `pyscript` is echoing the output of a shell command |
18 | | - since the output will print at the same frequency as when the command is run in a terminal. |
| 20 | + contain a newline or carriage return. This helps when `pyscript` is echoing the output of a shell command |
| 21 | + since the output will print at the same frequency as when the command is run in a terminal. |
19 | 22 | * **ACArgumentParser** no longer prints complete help text when a parsing error occurs since long help messages |
20 | | - scroll the actual error message off the screen. |
| 23 | + scroll the actual error message off the screen. |
21 | 24 | * Exceptions occurring in tab completion functions are now printed to stderr before returning control back to |
22 | 25 | readline. This makes debugging a lot easier since readline suppresses these exceptions. |
23 | 26 | * Added support for custom Namespaces in the argparse decorators. See description of `ns_provider` argument |
24 | 27 | for more information. |
25 | 28 | * Transcript testing now sets the `exit_code` returned from `cmdloop` based on Success/Failure |
26 | 29 | * The history of entered commands previously was saved using the readline persistence mechanism, |
27 | | - and only persisted if you had readline installed. Now history is persisted independent of readline; user |
28 | | - input from previous invocations of `cmd2` based apps now shows in the `history` command. |
29 | | - |
| 30 | + and only persisted if you had readline installed. Now history is persisted independent of readline; user |
| 31 | + input from previous invocations of `cmd2` based apps now shows in the `history` command. |
| 32 | + * Text scripts now run immediately instead of adding their commands to `cmdqueue`. This allows easy capture of |
| 33 | + the entire script's output. |
| 34 | + * Added member to `CommandResult` called `stop` which is the return value of `onecmd_plus_hooks` after it runs |
| 35 | + the given command line. |
30 | 36 | * Breaking changes |
31 | 37 | * Replaced `unquote_redirection_tokens()` with `unquote_specific_tokens()`. This was to support the fix |
32 | | - that allows terminators in alias and macro values. |
| 38 | + that allows terminators in alias and macro values. |
33 | 39 | * Changed `Statement.pipe_to` to a string instead of a list |
34 | 40 | * `preserve_quotes` is now a keyword-only argument in the argparse decorators |
35 | 41 | * Refactored so that `cmd2.Cmd.cmdloop()` returns the `exit_code` instead of a call to `sys.exit()` |
36 | | - It is now application developer's responsibility to treat the return value from `cmdloop()` accordingly |
| 42 | + It is now application developer's responsibility to treat the return value from `cmdloop()` accordingly |
37 | 43 | * Only valid commands are persistent in history between invocations of `cmd2` based apps. Previously |
38 | | - all user input was persistent in history. If readline is installed, the history available with the up and |
39 | | - down arrow keys (readline history) may not match that shown in the `history` command, because `history` |
40 | | - only tracks valid input, while readline history captures all input. |
| 44 | + all user input was persistent in history. If readline is installed, the history available with the up and |
| 45 | + down arrow keys (readline history) may not match that shown in the `history` command, because `history` |
| 46 | + only tracks valid input, while readline history captures all input. |
41 | 47 | * History is now persisted in a binary format, not plain text format. Previous history files are destroyed |
42 | | - on first launch of a `cmd2` based app of version 0.9.13 or higher. |
| 48 | + on first launch of a `cmd2` based app of version 0.9.13 or higher. |
43 | 49 | * HistoryItem class is no longer a subclass of `str`. If you are directly accessing the `.history` attribute |
44 | | - of a `cmd2` based app, you will need to update your code to use `.history.get(1).statement.raw` instead. |
| 50 | + of a `cmd2` based app, you will need to update your code to use `.history.get(1).statement.raw` instead. |
| 51 | + * Removed internally used `eos` command that was used to keep track of when a text script's commands ended |
| 52 | + * Removed `cmd2` member called `_STOP_AND_EXIT` since it was just a boolean value that should always be True |
| 53 | + * Removed `cmd2` member called `_should_quit` since `PyscriptBridge` now handles this logic |
| 54 | + * Removed support for `cmd.cmdqueue` |
| 55 | + * `allow_cli_args` is now an argument to __init__ instead of a `cmd2` class member |
45 | 56 | * **Python 3.4 EOL notice** |
46 | 57 | * Python 3.4 reached its [end of life](https://www.python.org/dev/peps/pep-0429/) on March 18, 2019 |
47 | 58 | * This is the last release of `cmd2` which will support Python 3.4 |
|
0 commit comments