func NewOpener(ctx context.Context, creds string) (Opener, error) {
	var options []option.ClientOption
	if creds != "" {
		options = append(options, option.WithCredentialsFile(creds))
	}
	client, err := storage.NewClient(ctx, options...)
	if err != nil {
		if creds != "" {
			return nil, err
		}
		logrus.WithError(err).Debug("Cannot load application default gcp credentials")
		client = nil
	}
	return opener{gcs: client}, nil
}
func NewOpener(ctx context.Context, creds string) (Opener, error) {
	var options []option.ClientOption
	if creds != "" {
		options = append(options, option.WithCredentialsFile(creds))
	}
	client, err := storage.NewClient(ctx, options...)
	if err != nil {
		if creds != "" {
			return nil, err
		}
		logrus.WithError(err).Debug("Cannot load application default gcp credentials")
		client = nil
	}
	return opener{gcs: client}, nil
}
// NewOpener returns an opener that can read GCS and local paths.