aboutsummaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
authorGravatar Dave MacLachlan <dmaclach@google.com>2016-02-03 23:31:39 +0000
committerGravatar David Chen <dzc@google.com>2016-02-04 18:10:48 +0000
commit4800626eee5245a062e910b648adb2f291e212c5 (patch)
tree3788c41baf1878357c652ed5df013b0a2d3abb21 /examples
parent2f4d1c2583b3fc1ce63d7c5eb678f0717c21db1a (diff)
Add shell example to bazel. Includes sh_binary, sh_library and sh_test.
-- MOS_MIGRATED_REVID=113789897
Diffstat (limited to 'examples')
-rw-r--r--examples/BUILD1
-rw-r--r--examples/shell/BUILD28
-rw-r--r--examples/shell/README.md10
-rwxr-xr-xexamples/shell/bin.sh26
-rw-r--r--examples/shell/data/file.txt1
-rw-r--r--examples/shell/data/test_file.txt1
-rwxr-xr-xexamples/shell/lib.sh26
-rwxr-xr-xexamples/shell/test.sh35
8 files changed, 128 insertions, 0 deletions
diff --git a/examples/BUILD b/examples/BUILD
index 3ce954ea6a..9d25b8fc73 100644
--- a/examples/BUILD
+++ b/examples/BUILD
@@ -11,5 +11,6 @@ filegroup(
"//examples/proto:srcs",
"//examples/py:srcs",
"//examples/py_native:srcs",
+ "//examples/shell:srcs",
],
)
diff --git a/examples/shell/BUILD b/examples/shell/BUILD
new file mode 100644
index 0000000000..9aba320bc2
--- /dev/null
+++ b/examples/shell/BUILD
@@ -0,0 +1,28 @@
+package(default_visibility = ["//visibility:public"])
+
+sh_binary(
+ name = "bin",
+ srcs = ["bin.sh"],
+ deps = [":lib"],
+)
+
+sh_library(
+ name = "lib",
+ data = [
+ "data/file.txt",
+ "lib.sh",
+ ],
+)
+
+sh_test(
+ name = "test",
+ size = "small",
+ srcs = ["test.sh"],
+ data = ["data/test_file.txt"],
+ deps = [":lib"],
+)
+
+filegroup(
+ name = "srcs",
+ srcs = ["BUILD"] + glob(["**/*.sh"]) + glob(["**/*.txt"]),
+)
diff --git a/examples/shell/README.md b/examples/shell/README.md
new file mode 100644
index 0000000000..da0c726621
--- /dev/null
+++ b/examples/shell/README.md
@@ -0,0 +1,10 @@
+# Shell Examples
+
+These examples demonstrate building shell binaries, libraries, and tests.
+They also show methods to access runfiles from different shell targets.
+
+```
+bazel build examples/shell:bin
+bazel build examples/shell:lib
+bazel test examples/shell:test
+```
diff --git a/examples/shell/bin.sh b/examples/shell/bin.sh
new file mode 100755
index 0000000000..02345b0157
--- /dev/null
+++ b/examples/shell/bin.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# Copyright 2016 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -eu
+
+# This allows the script to be both a binary and a library script. If our binary has defined
+# RUNFILES then we use it, otherwise we look for our own runfiles.
+RUNFILES=${RUNFILES:-$0.runfiles}
+
+source "${RUNFILES}/examples/shell/lib.sh"
+
+showfile
+
diff --git a/examples/shell/data/file.txt b/examples/shell/data/file.txt
new file mode 100644
index 0000000000..2741ec4dd0
--- /dev/null
+++ b/examples/shell/data/file.txt
@@ -0,0 +1 @@
+Hello Bazel!
diff --git a/examples/shell/data/test_file.txt b/examples/shell/data/test_file.txt
new file mode 100644
index 0000000000..2741ec4dd0
--- /dev/null
+++ b/examples/shell/data/test_file.txt
@@ -0,0 +1 @@
+Hello Bazel!
diff --git a/examples/shell/lib.sh b/examples/shell/lib.sh
new file mode 100755
index 0000000000..979a2c6b67
--- /dev/null
+++ b/examples/shell/lib.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# Copyright 2016 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -eu
+
+# This allows the script to be both a binary and a library script. If our binary has defined
+# RUNFILES then we use it, otherwise we look for our own runfiles.
+RUNFILES=${RUNFILES:-$0.runfiles}
+
+function showfile {
+ cat "${RUNFILES}/examples/shell/data/file.txt"
+}
+
diff --git a/examples/shell/test.sh b/examples/shell/test.sh
new file mode 100755
index 0000000000..6b7ba90e37
--- /dev/null
+++ b/examples/shell/test.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# Copyright 2016 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -eu
+
+# This allows RUNFILES to be declared outside the script it you want.
+# RUNFILES for test is the directory of the script.
+RUNFILES=${RUNFILES:-$($(cd $(dirname ${BASH_SOURCE[0]})); pwd)}
+
+source "${RUNFILES}/examples/shell/lib.sh"
+
+function test_output {
+ OUTPUT=$(showfile)
+ EXPECTED_OUTPUT=$(cat "${RUNFILES}/examples/shell/data/test_file.txt")
+
+ if [ "${OUTPUT}" != "${EXPECTED_OUTPUT}" ]; then
+ # This would be a failure case.
+ exit 1
+ fi
+}
+
+test_output