On Mon, Jul 20, 2020 at 04:55:52PM -0400, Steven Schveighoffer via Digitalmars-d-learn wrote: > I am doing some scripting via D, and using std.process.execute to git > clone things. > > I don't want any user interaction. Occasionally, I get a repository > that no longer exists (404). Then git comes up and asks for a > username/password. I want it to just fail. Apparently git has no > option to be non-interactive, it supposedly checks stdin to see if > it's a tty, and only errors if it's not.
Try --no-pager perhaps? Not sure if that would help, since this isn't technically a pager that's prompting you. Another way is to take a look at std.process.execute's implementation. I believe it's just a wrapper around spawnProcess. What you want is to adapt that implementation so that it closes stdin before fork-n-exec'ing git; that should stop any prompts. One thing to be aware of is that it may not necessarily be git itself that's prompting you; it could be a helper program like a password manager that creates the prompt. In that case you probably have to find out what it is, and disable it somehow (usually by overriding some environment variable that gets passed to the git child process). T -- Ph.D. = Permanent head Damage