in apt/method.go [103:134]
func (m *Method) initClient(ctx context.Context) error {
if m.client != nil {
return nil
}
var ts oauth2.TokenSource
switch {
case m.config.serviceAccountJSON != "":
json, err := os.ReadFile(m.config.serviceAccountJSON)
if err != nil {
return fmt.Errorf("failed to read service account JSON file: %v", err)
}
creds, err := google.CredentialsFromJSON(ctx, json, cloudPlatformScope)
if err != nil {
return fmt.Errorf("failed to obtain creds from service account JSON: %v", err)
}
ts = creds.TokenSource
case m.config.serviceAccountEmail != "":
ts = google.ComputeTokenSource(m.config.serviceAccountEmail)
default:
creds, err := google.FindDefaultCredentials(ctx, cloudPlatformScope)
if err != nil {
return fmt.Errorf("failed to obtain default creds: %v", err)
}
ts = creds.TokenSource
}
if ts == nil {
return errors.New("failed to obtain creds")
}
m.client = oauth2.NewClient(ctx, ts)
return nil
}