When using ./pants options, hide options from super-scopes.

Review Request #3528 - Created March 2, 2016 and submitted

Garrett Malmquist
benjyw, zundel
The `./pants options` output is pretty verbose, especially for
common flags like --colors that are inherited by every subscope.

This change adds a --skip-inherited flag (enabled by default) which
omits options which are inherited from parent scopes (and have the
same value as the parent scope).

Now, running:

    ./pants --no-colors \
    --options-colors \
    --test-junit-colors \
    --no-jvm-platform-validate-colors \
    options --name=colors

Produces the much more concise output:

    colors = False (from FLAG)
    options.colors = True (from HARDCODED)
    test.junit.colors = True (from HARDCODED)

Added a test to tests/python/pants_test/test_options_integration.py.

CI went green: https://travis-ci.org/pantsbuild/pants/builds/113200666

Eric Ayers
Garrett Malmquist
Garrett Malmquist
Review request changed

Status: Closed (submitted)

Change Summary:

In commit 84e9127e9de5771cbb6f925a1e351dcb46e9c4a5, Thanks Eric!

Benjy Weinberger


I would have preferred it if you'd waited for my shipit before submitting. We're trying to have non-trivial changes reviewed by people from at least two different orgs, and in this case you only got one shipit, and that within Square. I posit that this change is non-trivial because it adds an option, so it can't be easily reverted. Thanks!

  1. Sorry, I didn't realize adding option implies nontrivial. I'll keep that in mind!