about summary refs log tree commit diff
path: root/overrides/buildGo/example
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-12-19T15·24+0000
committerVincent Ambo <tazjin@google.com>2019-12-19T15·24+0000
commite996141d2ea24da382b8702e974f2b3baa5a6135 (patch)
tree92801e051eeb8d1d88c61a97ae4da3fb7a226099 /overrides/buildGo/example
parent11865364acaa4b03124c6beb73f6b7a18776eae6 (diff)
parenta8fbdc52c2d7170bc8b144bef9d522bef9f0d815 (diff)
merge(buildGo): Integrate buildGo.nix into depot r/202
Diffstat (limited to 'overrides/buildGo/example')
-rw-r--r--overrides/buildGo/example/default.nix47
-rw-r--r--overrides/buildGo/example/lib.go9
-rw-r--r--overrides/buildGo/example/main.go25
-rw-r--r--overrides/buildGo/example/thing.proto10
4 files changed, 91 insertions, 0 deletions
diff --git a/overrides/buildGo/example/default.nix b/overrides/buildGo/example/default.nix
new file mode 100644
index 000000000000..5abed1fbbcb5
--- /dev/null
+++ b/overrides/buildGo/example/default.nix
@@ -0,0 +1,47 @@
+# 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
+  ];
+
+  x_defs = {
+    "main.Flag" = "successfully";
+  };
+}
diff --git a/overrides/buildGo/example/lib.go b/overrides/buildGo/example/lib.go
new file mode 100644
index 000000000000..8a61370e994c
--- /dev/null
+++ b/overrides/buildGo/example/lib.go
@@ -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"
+}
diff --git a/overrides/buildGo/example/main.go b/overrides/buildGo/example/main.go
new file mode 100644
index 000000000000..bbcedbff8726
--- /dev/null
+++ b/overrides/buildGo/example/main.go
@@ -0,0 +1,25 @@
+// 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"
+)
+
+var Flag string = "unsuccessfully"
+
+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)
+	fmt.Printf("The flag has been %s set\n", Flag)
+}
diff --git a/overrides/buildGo/example/thing.proto b/overrides/buildGo/example/thing.proto
new file mode 100644
index 000000000000..0cb34124dfb9
--- /dev/null
+++ b/overrides/buildGo/example/thing.proto
@@ -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;
+}