mirror of https://github.com/pulumi/pulumi.git
1be4888f7d
`result.Result` is a type that was introduced to enable us to distinguish between *expected* errors (or *bails* in Pulumi parlance) and *unexpected* errors or exceptions. Prior to Go 1.13, this made a lot of sense, since there was no standard story on "wrapping" errors, and thus no way to answer the question "did I end up here (in an error path) because I meant to, or did I end up here because of a program bug?". With the introduction of `%w`, `interface { Unwrap() []error }` and company in Go 1.13, a simpler interface is available: one can use `errors.Is` and `errors.As` to ask if an error at any point wraps an error of a certain type. With this, we can simply ask "is there a bail at any point in this error tree?" rather than having to track this explicitly using a type such as `result.Result`. The `IsBail` function was introduced a while ago to this end, but its rollout was not completed and several uses of `result.Result` remained. This commit completes the rollout of this simplified interface, replacing all uses of `result.Result` with native Go errors that may or may not wrap bails, and all uses of e.g. `res.IsBail` with `IsBail(err)`. Doing so allows us to remove `result.Result` entirely. |
||
---|---|---|
.. | ||
auto | ||
common | ||
internal | ||
property | ||
pulumi | ||
pulumi-language-go | ||
pulumix | ||
Makefile | ||
README.md |
README.md
Pulumi Golang SDK
This directory contains support for writing Pulumi programs in the Go language. There are two aspects to this:
pulumi/
contains the client language bindings Pulumi program's code directly against;pulumi-language-go/
contains the language host plugin that the Pulumi engine uses to orchestrate updates.
To author a Pulumi program in Go, simply say so in your Pulumi.yaml
name: <my-project>
runtime: go
and ensure you have pulumi-language-go
on your path (it is distributed in the Pulumi download automatically).
By default, the language plugin will use your project's name, <my-project>
, as the executable that it loads. This too
must be on your path for the language provider to load it when you run pulumi preview
or pulumi up
.