This message was deleted.
# golang
s
This message was deleted.
b
My example code below:
Copy code
type GPGKeyResource struct {
	pulumi.ResourceState

	privateKey pulumi.String `pulumi:"privateKey"`
	publicKey  pulumi.String `pulumi:"publicKey"`
}
Copy code
func NewGPGKey(ctx *pulumi.Context, keyName string) (*GPGKeyResource, error) {
	var resource GPGKeyResource
	err := ctx.RegisterComponentResource("pulumi:ex:GPGKeyResource", keyName, &resource, pulumi.AdditionalSecretOutputs([]string{"gpg-private"}))
	if err != nil {
		return nil, err
	}

	var pub, priv bytes.Buffer
	err = cryptoutils.GeneratePGPKeyPair(&pub, &priv)
	if err != nil {
		return nil, errors.Wrap(err, "Could not generate PGP key pairs")
	}

	resource.publicKey = pulumi.String(pub.String())
	resource.privateKey = pulumi.String(priv.String())
	ctx.Export("gpg-public", resource.publicKey)
	ctx.Export("gpg-private", pulumi.ToSecret(resource.privateKey))

	return &resource, nil
}
e
For python or nodejs you could use dynamic providers that let you write the provider inline with your program. We don't currently support that for go, so you'd have to write a full stand alone provider for the custom resources. There's docs on this at https://www.pulumi.com/docs/guides/pulumi-packages/how-to-author/
b
Thanks. I think I’ll be able to replace my problematic components with Random and Command packages, for the time being
s
You might be able to base a custom “full” provider on this: https://github.com/ekristen/terraform-provider-pgp