func()

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
}