Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Options parsing shouldn't care that positional args are specs. #8602

Merged
merged 7 commits into from
Nov 11, 2019

Conversation

benjyw
Copy link
Sponsor Contributor

@benjyw benjyw commented Nov 8, 2019

This mostly just renames the target_specs fields in ArgSplitter
and Options to positional_args. Consumers of parsed command
lines can know that the positional args represent target specs,
but there's no need for the cmd line parser itself to know this.

Note that in practice the arg splitter still ~knows that positional
args "look like" target specs or paths, so that it can tell them
apart from unknown goals. However we can expand the positional
arg detection heuristic in the future, to include things that
aren't paths. This change breaks out that heuristic into a method,
so that we can modify it in the future.

This change also removes the old affordance for inserting the
superfluous word goal in command lines. E.g.,
./pants goal compile ... instead of ./pants compile ....
That was a legacy of early versions of pants, and has not
been "a thing" for a very long time.

This mostly just renames the `target_specs` fields in ArgSplitter
and Options to `positional_args`.  Consumers of parsed command
lines can know that the positional args represent target specs,
but there's no need for the cmd line parser itself to know this.

Note that in practice the arg splitter still ~knows that positional
args "look like" target specs or paths, so that it can tell them
apart from unknown goals. However we can expand the positional
arg detection heuristic in the future, to include things that
aren't paths. This change breaks out that heuristic into a method,
so that we can modify it in the future.

This change also removes the old affordance for inserting the
superfluous word `goal` in command lines. E.g.,
`./pants goal compile ...` instead of `./pants compile ...`.
That was a legacy of early versions of pants, and has not
been "a thing" for a very long time.
Copy link
Contributor

@Eric-Arellano Eric-Arellano left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great! Thank you for breaking this out into a dedicated PR.

passthru: Any remaining args specified after a -- separator.
passthru_owner: The scope specified last on the command line, if any. None otherwise.
"""
@dataclass(frozen=True)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for typing this!

src/python/pants/option/arg_splitter.py Outdated Show resolved Hide resolved
src/python/pants/option/options.py Show resolved Hide resolved
@benjyw benjyw merged commit 12cfd4f into pantsbuild:master Nov 11, 2019
@benjyw benjyw deleted the positional_args_in_options branch November 11, 2019 22:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants