in pkg/berglas/reference.go [159:195]
func secretManagerParseReference(s string) (*Reference, error) {
// Parse the remainder as a URL to extract any query params
u, err := url.Parse(s)
if err != nil {
return nil, fmt.Errorf("failed to parse secrets reference as url: %w", err)
}
// Separate project from secret
ss := strings.SplitN(u.Path, "/", 2)
if len(ss) < 2 {
return nil, fmt.Errorf("invalid secret format %q", s)
}
// Create the reference
var r Reference
r.typ = ReferenceTypeSecretManager
r.project = ss[0]
r.name = ss[1]
if u.Fragment != "" {
r.version = u.Fragment
}
// Secrets cannot be nested
if strings.Contains(r.name, "/") {
return nil, fmt.Errorf("invalid secret name %q", r.name)
}
// Parse destination
path, err := refExtractFilepath(r.name, u.Query().Get("destination"))
if err != nil {
return nil, err
}
r.filepath = path
return &r, nil
}