func createRun()

in main.go [629:683]


func createRun(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)
	}

	data := strings.TrimSpace(args[1])
	plaintext, err := readData(data)
	if err != nil {
		return misuseError(err)
	}

	switch t := ref.Type(); t {
	case berglas.ReferenceTypeSecretManager:
		secret, err := client.Create(ctx, &berglas.SecretManagerCreateRequest{
			Project:   ref.Project(),
			Name:      ref.Name(),
			Locations: smLocations,
			Plaintext: plaintext,
		})
		if err != nil {
			return apiError(err)
		}
		fmt.Fprintf(stdout, "Successfully created secret [%s] with version [%s]\n",
			secret.Name, secret.Version)
	case berglas.ReferenceTypeStorage:
		// Check if no unsupported options have been given
		if len(smLocations) > 0 {
			return misuseError(fmt.Errorf("locations on a per-secret basis unsupported for Storage keys"))
		}

		// Create the requested secret
		secret, err := client.Create(ctx, &berglas.StorageCreateRequest{
			Bucket:    ref.Bucket(),
			Object:    ref.Object(),
			Key:       key,
			Plaintext: plaintext,
		})
		if err != nil {
			return apiError(err)
		}

		fmt.Fprintf(stdout, "Successfully created secret [%s] with generation [%d]\n",
			secret.Name, secret.Generation)
	default:
		return misuseError(fmt.Errorf("unknown type %T", t))
	}

	return nil
}