Skip to content

progress.rs: don't fail if not a tty#6395

Closed
srwalter wants to merge 1 commit into
rust-lang:masterfrom
srwalter:progress
Closed

progress.rs: don't fail if not a tty#6395
srwalter wants to merge 1 commit into
rust-lang:masterfrom
srwalter:progress

Conversation

@srwalter

@srwalter srwalter commented Dec 7, 2018

Copy link
Copy Markdown

It's not clear that it was intentional for progress to be disabled when
the output is not a tty. Indeed there is reason we might want to have
progress output in that case. For example, when cargo is invoked by
bitbake, cargo's output will be run through a pipe. Bitbake can parse
out progress updates from that output, but only if cargo actually emits
them...

@alexcrichton

Copy link
Copy Markdown
Member

Thanks for the PR! This was originally done intentionally because most pipes don't handle the commands we later use for things like clearing a line too well (and redirecting to a file looks weird with the progress bar and such). That being said perhaps we could add an option to force the progress bar to show up even if the output isn't a TTY?

@ehuss

ehuss commented Dec 7, 2018

Copy link
Copy Markdown
Contributor

I personally would prefer a config option (which would implicitly support an env var), though not everyone agrees. cc #5721

@srwalter

srwalter commented Dec 7, 2018

Copy link
Copy Markdown
Author

Something like this?

@alexcrichton

Copy link
Copy Markdown
Member

Seems reasonable to me! Let's see what others think.

@rfcbot fcp merge

As one question, do others have thoughts on the name? Would we maybe want to generalize --progress slightly or leave it targeted as it is now?

@rfcbot

rfcbot commented Dec 10, 2018

Copy link
Copy Markdown

Team member @alexcrichton has proposed to merge this. The next step is review by the rest of the tagged team members:

No concerns currently listed.

Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

See this document for info about what commands tagged team members can give me.

@Eh2406

Eh2406 commented Dec 10, 2018

Copy link
Copy Markdown
Contributor

Do we want this to be a arg or an env var?
Do we want to add a symmetric way to force it off?

@ehuss

ehuss commented Dec 10, 2018

Copy link
Copy Markdown
Contributor

I still lean towards a config var myself.

Either way, I definitely think it should be generalized with a string. There have been several requests for a way to force it off. The current solution of CI=1 is pretty hacky.

@srwalter

Copy link
Copy Markdown
Author

@ehuss so you want to see e.g. --progress=on and --progress=off?

@withoutboats

Copy link
Copy Markdown
Contributor

This is the sort of env var I wish we didn't have to have: it would be ideal to me if tools wrapping cargo and piping its output were dealing with a lower level CLI, and the primary user focused CLI were just opinionated about what its output looks like.

That said, users have problems now so I don't know what else to do.

@nrc

nrc commented Dec 10, 2018

Copy link
Copy Markdown
Member

I'm also in favour of a config var and using a string. I'd prefer something more descriptive than on and off, e.g., none and something describing how the default bar is rendered?

@joshtriplett

Copy link
Copy Markdown
Member

Let's default to "auto" (progress if tty) and have --progress and --no-progress for forcing it on and off. Let's not worry about having a "batch friendly progress" beyond printing complete fetches or builds.

@ehuss

ehuss commented Dec 11, 2018

Copy link
Copy Markdown
Contributor

I don't have a strong opinion about the text. One option is to mirror the color option and use auto/always/never. @nrc's suggestion sounds fine, too.

@alexcrichton

Copy link
Copy Markdown
Member

From what others have said and remembering about .cargo/config, I think that's the way to go here as well. We've already got a [term] section for other terminal configuration, and I think this'd fit nicely there. Eventually I'd like to implement an arbitrary --config CLI option as well so you can use that instead of an env var too!

@joshtriplett

Copy link
Copy Markdown
Member

@alexcrichton The ability to say "always" in configuration can lead to some awful breakage if tools expect to parse the command-line output.

@dwijnand

Copy link
Copy Markdown
Contributor

This feels like the kind of arbitrary additions to the surface area of the CLI arguments, config keys and env vars that we don't want to rush out.

How many users of Bitbake (and similar) are we trying to cater to? How important is this capability for them?

I don't mean to ask that in a harsh way, just trying to understand better.

@bors

bors commented Feb 1, 2019

Copy link
Copy Markdown
Contributor

☔ The latest upstream changes (presumably #6615) made this pull request unmergeable. Please resolve the merge conflicts.

@rfcbot rfcbot added proposed-final-comment-period An FCP proposal has started, but not yet signed off. disposition-merge FCP with intent to merge labels Feb 22, 2019
@dwijnand dwijnand changed the title progress.rs: don`t fail if not a tty progress.rs: don't fail if not a tty Feb 27, 2019
@dwijnand

dwijnand commented Mar 2, 2019

Copy link
Copy Markdown
Contributor

I've come around to this now, seeing how it mirrors --color.

@rfcbot reviewed

Eventually I'd like to implement an arbitrary --config CLI option as well so you can use that instead of an env var too!

Just cc'ing here too: there's now a proposal for that idea which we might want to consider: #6699

The --progress switch will cause progress updates to be output, even if
the output device is not a TTY.
@srwalter

srwalter commented Mar 3, 2019

Copy link
Copy Markdown
Author

I don't understand the macOS failure in Travis

@dwijnand

dwijnand commented Mar 3, 2019

Copy link
Copy Markdown
Contributor

I've seen package::do_not_package_if_src_was_modified fail a few times on macOS. Restarted.

@alexcrichton

Copy link
Copy Markdown
Member

@rfcbot fcp cancel

I'm gonna cancel the FCP request has this has gone a bit stale. @srwalter would you be up for switching this to a config option like I mentioned above?

@rfcbot

rfcbot commented Mar 8, 2019

Copy link
Copy Markdown

@alexcrichton proposal cancelled.

@rfcbot rfcbot removed proposed-final-comment-period An FCP proposal has started, but not yet signed off. disposition-merge FCP with intent to merge labels Mar 8, 2019
@alexcrichton

Copy link
Copy Markdown
Member

I'm gonna go ahead and close this due to inactivity, but it can of course be resubmitted!

@nhynes

nhynes commented Jul 13, 2019

Copy link
Copy Markdown

I like this proposal. Cargo wrappers are sometimes helpful and the progress bar really keeps things feeling snappy. I guess an alternative proposal would be to grab the build-plan beforehand and recreate the progress bar as the piped output is updated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

T-cargo Team: Cargo

Projects

None yet

Development

Successfully merging this pull request may close these issues.