Token helps gcloudTokenSource implement oauth2.TokenSource.
()
| 55 | |
| 56 | // Token helps gcloudTokenSource implement oauth2.TokenSource. |
| 57 | func (configHelper) Token() (*oauth2.Token, error) { |
| 58 | gcloudCmd, err := Path() |
| 59 | if err != nil { |
| 60 | return nil, err |
| 61 | } |
| 62 | buf, errbuf := new(bytes.Buffer), new(bytes.Buffer) |
| 63 | cmd := exec.Command(gcloudCmd, "--format", "json", "config", "config-helper", "--min-expiry", "1h") |
| 64 | cmd.Stdout = buf |
| 65 | cmd.Stderr = errbuf |
| 66 | |
| 67 | if err := cmd.Run(); err != nil { |
| 68 | err = fmt.Errorf("error reading config: %v; stderr was:\n%v", err, errbuf) |
| 69 | return nil, err |
| 70 | } |
| 71 | |
| 72 | c := &config{} |
| 73 | if err := json.Unmarshal(buf.Bytes(), c); err != nil { |
| 74 | return nil, err |
| 75 | } |
| 76 | return c.Token(), nil |
| 77 | } |
| 78 | |
| 79 | // TokenSource returns an oauth2.TokenSource backed by the gcloud CLI. |
| 80 | func TokenSource() (oauth2.TokenSource, error) { |
no test coverage detected