google / oauth2l

oauth2l ("oauth tool") is a simple CLI for interacting with Google API authentication.
Apache License 2.0
651 stars 81 forks source link

Authentication "Log" message should be printed to STDERR instead of STDOUT, to avoid breaking shell scripts which redirect output #169

Open vorburger opened 4 months ago

vorburger commented 4 months ago

I'm using (something more or less like) the following inside a bash script:

oauth2l curl --scope tasks.readonly --url https://tasks.googleapis.com/tasks/v1/users/@me/lists --credentials credz.json >task-lists.json

Every 15' or so, when I it launches the Web Browser login thing, to refresh the token, which is successful (!), that task-lists.json file is "broken", and I have to manually fix it, because instead of containing valid JSON, it starts with:

Your browser has been opened to visit:

 https://accounts.google.com/o/oauth2/auth?client_id=...

{
  "kind": "tasks#tasks",

This is because oauth2l writes both it's "real output" (JSON) as well as it's "diagnostics bla bla" to STDOUT.

IMHO, it would be better if "Your browser has been opened to visit:" and what not were written to STDERR instead of STDOUT?

Code to be changed from fmt.Println to fmt.Fprintln(os.Stderr, "...") is here

Would you welcome a PR fixing this?