in main.go [920:959]
func grantRun(cmd *cobra.Command, args []string) error {
ctx, client, err := clientWithContext(cmd.Context())
if err != nil {
return misuseError(err)
}
ref, err := parseRef(args[0])
if err != nil {
return misuseError(err)
}
sort.Strings(members)
switch t := ref.Type(); t {
case berglas.ReferenceTypeSecretManager:
if err := client.Grant(ctx, &berglas.SecretManagerGrantRequest{
Project: ref.Project(),
Name: ref.Name(),
Members: members,
}); err != nil {
return apiError(err)
}
fmt.Fprintf(stdout, "Successfully granted permission on [%s] to: \n- %s\n",
ref.Name(), strings.Join(members, "\n- "))
case berglas.ReferenceTypeStorage:
if err := client.Grant(ctx, &berglas.StorageGrantRequest{
Bucket: ref.Bucket(),
Object: ref.Object(),
Members: members,
}); err != nil {
return apiError(err)
}
fmt.Fprintf(stdout, "Successfully granted permission on [%s] to: \n- %s\n",
ref.Object(), strings.Join(members, "\n- "))
default:
return misuseError(fmt.Errorf("unknown type %T", t))
}
return nil
}