On 1/30/22 5:12 AM, Ryan Schmidt wrote:
On Jan 30, 2022, at 03:30, Andrew Janke wrote:

All MacPorts commands operate on a Portfile in the current directory if you 
don't specify what ports to operate on.
This was the "implicit knowledge" I was lacking here.
There is admittedly a lot to know, and several different places where things are 
documented (guide, wiki, manpages). This bit is documented in the first paragraph of 
"man port":

        port is designed to operate on individual or multiple ports,
        optionally within a single call, based on the requested action. If
        no action is specified the port command enters shell mode, in which
        commands are read via stdin. If no portdir or portname is specified
        for an action, the current working directory is assumed. Batch
        commands may be passed via a cmdfile. Port options are passed as
        key=value pairs and take precedence over individual portname
        options as specified in its Portfile and system-wide settings.
That's a perfectly clear explanation of it. Guess I should have spent more time reading the overall man page instead of going right to the "upgrade" subcommand.
"Could not find Portfile in /Users/janke" isn't too unclear, is it?
IMHO, that would be a nice improvement:
My point was that it already prints that. So I guess you're saying it would be 
clearer if we printed only that and not the other information?

Yep, exactly: the presence of the URL up front in the first line of the error message distracted me from the rest of the message and its "no portfile found here", and I wasn't sure if the whole thing represented one single error message about a single error condition, or if I was seeing a sequence of two errors, one about some network/URL thing, and then a second one that was some fallout or sequelae of the first.
Maybe we can special-case the situation where no ports are specified and the 
currently directory doesn't contain a Portfile and print something more 
helpful, like:

Error: No ports were specified and the current directory /foo/bar does not 
contain a Portfile
That sounds like a nice improvement to me. IMHO this error message form is more concise, yet contains more specifically-relevant info about what the error means in the context of this specific attempted operation, and seems more readable.
There's no reason to suspect that a user who doesn't specify a port meant to specify the 
pseudoport "outdated". I think it might not necessarily even be known at the 
time that the list of specified ports is processed which command that set of ports will 
be handed to.
Fair enough. That might be an assumption I'm bringing with me from the Homebrew 
world.
What I mean is: the user might have typed "port info" or "port uninstall" or any other 
port command. "outdated" is not a reasonable default (or reasonable suggested value) for each of 
the commands. If you're saying that different port commands should have different suggested values when no 
port is specified, then we would have to decide what each of those would be and see if the code that prints 
the error message has access to the information about which command is being run.
Ah. Yeah, this current behavior seems sensible them; switching to a per-command default sounds like both a lot of work, and a possibly-breaking user-visible behavior change.

Cheers,
Andrew

Reply via email to