Reorganize option help.
Review Request #2695 - Created Aug. 25, 2015 and submitted
- Print subsystem help alongside the scope that subsystem serves. E.g., if you ask for help for test.junit, it'll show help for jvm.test.junit as well. - This required handling subsystem option 'recursion' explicitly, rather than relying on the subsystem author adding recursive=True to all their option registrations. The distinction is that subsystem options registered recursively from the global subsystem are really basic options for the purpose of help printing. It's obviously also nicer to not require the subsystem author to add recursive=True everywhere. - More correctly implement the heuristic of showing help for all tasks under a goal when './pants help <goal>' is requested. The previous logic just showed help for any subscope of a requested scope, which meant it would repeat subsystem help once for every task-specific instance, which is obviously not useful for the user. - Moves help-related code out of pants/option and into a new pants/help package. This is because help code needs to depend on pants/subsystem, which pants/option cannot depend on. But it's also more organized, and makes more sense for non-option help.
CI running: https://travis-ci.org/pantsbuild/pants/builds/77084948