TODO - We should throw out fabric; paramiko does everything we need - we can open a shell and send signals to handle control-C and other sorts of situation handling. We'll basically have to rewrite how fabtools works but it should be relatively trivial since we already basically handle everything at the paramiko level. We may have to parse sshconfig ourselves but it shouldn't be too big a deal. - fix handling of control-c (sorta works sometimes) - redo the command loop to make some fuckin sense why do we use eceptions to do modal stuff - make styles optional - expose styles in config file or personal config - 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. - 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 (this requires throwing out fabric) - make a /summary command that *only* outputs the summary of a remote command, not the stdout/stderr - document more things about multiball - allow a user-specific configuration that isn't in the current directory - make a set of commands that modulate the /all list, so /all goes back to the real default not the total default - the ability to deploy files