func grantRun()

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
}