Search code examples
pythonpants

In the pants buildtool, what is the difference between 'advanced' options and regular options?


When you run ./pants with no options you get the help:

$ ./pants help
Pants 0.0.32 https://pypi.python.org/pypi/pantsbuild.pants/0.0.32

Usage:
  ./pants [option ...] [goal ...] [target...]  Attempt the specified goals.
  ./pants help                                 Get help.
  ./pants help [goal]                          Get help for a goal.
  ./pants help-advanced [goal]                 Get help for a goal's advanced options.
  ./pants help-all                             Get help for all goals.
  ./pants goals                                List all installed goals.

I noticed you can also see them with the --help-advanced flag.

Why are some of these like the following marked `(Advanced)'?

(ADVANCED)
--pants-bootstrapdir <dir>
                        Use this dir for global cache. (default:
                        /Users/zundel/.cache/pants)
(ADVANCED)
--pants-configdir <dir>
                        Use this dir for global config files. (default:
                        /Users/zundel/.config/pants)

Solution

  • Advanced options are not intended for use from the command line and are thus not normally displayed in traditional (-h,--help) command line help. These options are intended to be set once globally for a repository using pants in that repo's pants.ini configuration file if they need to be different from the pants standard defaults. The fact that help for these options destined for pants.ini is displayed on the command line is definitely odd and in some sense its a compromise convenience to provide documentation for those options.

    So for a small repo with one or two users "advanced" may be more of a misnomer than for a large repo used by many developers. In the small case, its likely both devs will need to setup or tweak their repo's pants.ini in the course of using pants in that repo. In the large repo case with many developers its more likely few developers will tweak pants.ini and so for the average pants user in that sort of repo these options truly are "advanced" and almost never useful.