This adds rudimentary support for Pulumi programs written in Go. It is not complete yet but the basic resource registration works. Note that, stylistically speaking, Go is a bit different from our other languages. This made it a bit easier to build this initial prototype, since what we want is actually a rather thin veneer atop our existing RPC interfaces. The lack of generics, however, adds some friction and is something I'm continuing to hammer on; this will most likely lead to little specialized types (e.g. StringOutput) once the dust settles. There are two primary components: 1) A new language host, `pulumi-language-go`, which is responsible for communicating with the engine through the usual gRPC interfaces. Because Go programs are pre-compiled, it very simply loads a binary with the same name as the project. 2) A client SDK library that Pulumi programs bind against. This exports the core resource types -- including assets -- properties -- including output properties -- and configuration. Most remaining TODOs are marked as such in the code, and this will not be merged until they have been addressed, and some better tests written.
17 lines
788 B
Markdown
17 lines
788 B
Markdown
# 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 update`.
|