7d8995991b
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.
788 B
788 B
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
.