TODO - add local variable support that can be interpolated into commands - keep track of previous command outputs for last command, and any previous command with target list and command line - Allow any given command to be tagged with a label, and the outputs would be stored in the output dictionary under that name (for scripting); we assign a default name to it, and are able to refer to it based on either the label, or how many commands back it was; - scripts entire output is stored as one label, but also - add commands to show the list of captured outputs, along with the commands and targets - add commands to search captured outputs - add commands to search captured outputs and put them into a variable that can be used for /target etc. - calling commands and aliases from command line (e.g. multiball -t -c ) - tagging and filtering commands (so `noupgrade` gets a tag, and we can filter them) - saving the last host set in a .file - allow server groups / server labels - add 'watch' to run a command repeatedly until it succeeds (interruptable) - add the number of servers for each group of services too - notice when you don't sudo in front of command and it errors and ask you if you meant to sudo - autocomplete for environment variable names (requires heirarchical completer) - implement target aliases (-filteralias) which gives a label to an argument to -hosts - ad-hoc host groupings with assigned names, and a host grouping stack - allow scripts that use -safe to prompt for safety / restore safety after running - implement various commented commands in the command list - implement interactive alias system - Catch more exceptions in fabtools, and also add retries - Make the runner aware of multiple commands so that it can combine outputs and make 'overall success' or 'overall failure' - make C-c break the connections not the program - make a /summary command that *only* outputs the summary of a remote command, not the stdout/stderr