about summary refs log tree commit diff
path: root/example/default.nix
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-11-24T20·34+0000
committerVincent Ambo <tazjin@google.com>2019-11-24T20·34+0000
commit071babf14824aee035dd6c3ddff1957662aa7c98 (patch)
treee45fb30c89aa8f2307a90e09e538cf039a2f1b3d /example/default.nix
parentd441e035aabac877948f754289b3ab028408550b (diff)
feat(example): Add an example for how to use buildGo builders
Diffstat (limited to 'example/default.nix')
-rw-r--r--example/default.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/example/default.nix b/example/default.nix
new file mode 100644
index 000000000000..407f55079359
--- /dev/null
+++ b/example/default.nix
@@ -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
+  ];
+}