feat(example): Add an example for how to use buildGo builders
This commit is contained in:
parent
d441e035aa
commit
071babf148
4 changed files with 84 additions and 0 deletions
43
example/default.nix
Normal file
43
example/default.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Copyright 2019 Google LLC.
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
# This file provides examples for how to use the various builder
|
||||||
|
# functions provided by `buildGo`.
|
||||||
|
#
|
||||||
|
# The features used in the example are not exhaustive, but should give
|
||||||
|
# users a quick introduction to how to use buildGo.
|
||||||
|
|
||||||
|
let
|
||||||
|
buildGo = import ../buildGo.nix {};
|
||||||
|
|
||||||
|
# Example use of buildGo.package, which creates an importable Go
|
||||||
|
# package from the specified source files.
|
||||||
|
examplePackage = buildGo.package {
|
||||||
|
name = "example";
|
||||||
|
srcs = [
|
||||||
|
./lib.go
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Example use of buildGo.proto, which generates a Go library from a
|
||||||
|
# Protobuf definition file.
|
||||||
|
exampleProto = buildGo.proto {
|
||||||
|
name = "exampleproto";
|
||||||
|
proto = ./thing.proto;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Example use of buildGo.program, which builds an executable using
|
||||||
|
# the specified name and dependencies (which in turn must have been
|
||||||
|
# created via buildGo.package etc.)
|
||||||
|
in buildGo.program {
|
||||||
|
name = "example";
|
||||||
|
|
||||||
|
srcs = [
|
||||||
|
./main.go
|
||||||
|
];
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
examplePackage
|
||||||
|
exampleProto
|
||||||
|
];
|
||||||
|
}
|
9
example/lib.go
Normal file
9
example/lib.go
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
// Copyright 2019 Google LLC.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
package example
|
||||||
|
|
||||||
|
// UUID returns a totally random, carefully chosen UUID
|
||||||
|
func UUID() string {
|
||||||
|
return "3640932f-ad40-4bc9-b45d-f504a0f5910a"
|
||||||
|
}
|
22
example/main.go
Normal file
22
example/main.go
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// Copyright 2019 Google LLC.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
//
|
||||||
|
// Package main provides a tiny example program for the Bazel-style
|
||||||
|
// Nix build system for Go.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"example"
|
||||||
|
"exampleproto"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
thing := exampleproto.Thing{
|
||||||
|
Id: example.UUID(),
|
||||||
|
KindOfThing: "test thing",
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("The thing is a %s with ID %q\n", thing.Id, thing.KindOfThing)
|
||||||
|
}
|
10
example/thing.proto
Normal file
10
example/thing.proto
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
// Copyright 2019 Google LLC.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
syntax = "proto3";
|
||||||
|
package exampleProto;
|
||||||
|
|
||||||
|
message Thing {
|
||||||
|
string id = 1;
|
||||||
|
string kind_of_thing = 2;
|
||||||
|
}
|
Loading…
Reference in a new issue