Go Use plugin¶
The Go Use plugin allows for setting up a go workspace for Go modules. It is
a companion plugin meant to be used with the Go plugin.
Use of this plugin sets up go.work and affects all parts.
Keywords¶
There are no additional keywords to the the common plugin and source keywords.
Dependencies¶
The Go plugin needs the go executable to build Go programs but does not provision it
by itself, to allow flexibility in the choice of compiler version.
Common means of providing go are:
The
golangUbuntu package, declared as abuild-package.The
gosnap, declared as abuild-snapfrom the desired channel.
Another alternative is to define another part with the name go-deps, and declare
that the part using the go plugin comes after the go-deps part. In this case, the plugin will
assume that this new part will stage the go executable to be used in the build step.
This can be useful, for example, in cases where a specific, unreleased version of go
is desired but unavailable as a snap or an Ubuntu package.
How it works¶
During the build step the plugin performs the following actions:
Setup a go workspace if
go.workhas not been setup;Call
go work use <source-dir>to add the source for the part to the workspace;
Examples¶
The following snippet declares a parts named go-flags using the go-use plugin and
a hello part that declares this go-flags` in its go.mod using the go plugin.
Correct ordering is achieved with the use of the after keyword in the hello part.
parts:
  go-flags:
    source: https://github.com/jessevdk/go-flags.git
    plugin: go-use
  hello:
    build-snaps:
      - go/1.22/stable
    plugin: go
    source: .
    after:
    - go-flags