aws/aws-cli — pull request #147 by jamesls (2013-06-10 20:33:44+00:00)
Title: Refactor clidriver/argparser for easier customization

This commit refactors the clidriver/argparser for easier
extension for plugins. As a result, some of the functionality
in core was moved to extensions.

The main change was to allow each level of command/operation/args
to be represented as a table that is sent out as a signal. This
allows extensions to add new commands/operations/arguments by
modifying the table.

I've also made a stab at integration tests to ensure I haven't
forgotten a feature that was previously supported. These integration
tests actually run the `aws` command to ensure end to end testing.

## Summary of Changes

* Refactor CLI driver to use command tables, operation tables, argument tables
* Introduce a CLIArgument type. These objects are responsible for adding themselves to an `ArgumentParser` instance, adding themselves to an argument table, and unpacking args and adding to the botocore params dict.
* Moved output_path customization for s3 into the builtin plugin module.

cc @garnaat @toastdriven