pw_cmd: Convert 'pw' into Python module; tweaks

This reworks the 'pw' single-file script into a proper Python module
with a setup.py and appropriate main() handling. It also splits the
'watch' command into a separate file.

This is the first step in adding more 'pw' subcommands.

Other minor tweaks:
- Drop coloredlogs dependency in favor of simpler solution
- Make level log component 3 characters only
- Change colors to better separate command output from logs
- Make a new "logdemo" command to illustrate all log levels
- Make a new "help" command to show top-level help
- Put some space around command output for visual separation

New 'pw help' output
--------------------
% pw help

 ▒█████▄   █▓  ▄███▒  ▒█    ▒█ ░▓████▒ ░▓████▒ ▒▓████▄
  ▒█░  █░ ░█▒ ██▒ ▀█▒ ▒█░ █ ▒█  ▒█   ▀  ▒█   ▀  ▒█  ▀█▌
  ▒█▄▄▄█░ ░█▒ █▓░ ▄▄░ ▒█░ █ ▒█  ▒███    ▒███    ░█   █▌
  ▒█▀     ░█░ ▓█   █▓ ░█░ █ ▒█  ▒█   ▄  ▒█   ▄  ░█  ▄█▌
  ▒█      ░█░ ░▓███▀   ▒█▓▀▓█░ ░▓████▒ ░▓████▒ ▒▓████▀

usage: pw [-h] {help,watch,logdemo} ...

The Pigweed command line interface (CLI)

Example uses:
    pw watch     Watch for changes and re-build
    pw logdemo   Show log examples

positional arguments:
  {help,watch,logdemo}  pw subcommand to run
    help                Show the Pigweed CLI help
    watch               Watch files for changes
    logdemo             Show how logs look at different levels

optional arguments:
  -h, --help            show this help message and exit

Change-Id: I8730f0fdd7fef91c4c4a5ba40e7251b45ee38b83
8 files changed
tree: 2b8265c95345b7f60a3c35ec1b612e42122699aa
  1. docs/
  2. pw_bloat/
  3. pw_build/
  4. pw_cmd/
  5. pw_docgen/
  6. pw_dumb_io/
  7. pw_dumb_io_baremetal_stm32f429/
  8. pw_dumb_io_stdio/
  9. pw_preprocessor/
  10. pw_span/
  11. pw_status/
  12. pw_string/
  13. pw_toolchain/
  14. pw_unit_test/
  15. targets/
  16. .clang-format
  17. .gitignore
  18. .gn
  19. AUTHORS
  20. BUILD
  21. BUILD.gn
  22. BUILDCONFIG.gn
  23. CONTRIBUTING.md
  24. LICENSE
  25. modules.gni
  26. presubmit.py
  27. pw_vars_default.gni
  28. README.md
  29. WORKSPACE
README.md

Pigweed embedded oriented software libraries

Pigweed is a collection of embedded-focused libraries, which we call "modules". These modules are designed for small-footprint MMU-less microcontrollers like the ST Micro STM32L452 or the Nordic NRF82832. The modules are designed to facilitate easy integration into existing codebases.

Pigweed is in the early stages of development.