aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-05-01 08:46:16 -0700
committerbors-servo <lbergstrom+bors@mozilla.com>2016-05-01 08:46:16 -0700
commit288db30cbe1e46b20ddd1fd885744a5868a081e8 (patch)
tree9dfa15c343b4a87e21c5faa814f47a1c93482e96
parentfc1e4c808541ca11e25831c7c6b5cfa924945fa5 (diff)
parentcca3f7a1058e401a085a14030f7e61db9653b964 (diff)
downloadservo-288db30cbe1e46b20ddd1fd885744a5868a081e8.tar.gz
servo-288db30cbe1e46b20ddd1fd885744a5868a081e8.zip
Auto merge of #10948 - aneeshusa:clean-up-ci-bash-scripts, r=emilio
Clean up CI bash scripts Also reverts #9572. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10948) <!-- Reviewable:end -->
-rw-r--r--docs/STYLE_GUIDE.md29
-rwxr-xr-xetc/ci/check_no_unwrap.sh5
-rwxr-xr-xetc/ci/lockfile_changed.sh9
-rwxr-xr-xetc/ci/manifest_changed.sh5
-rwxr-xr-xetc/ci/retry.sh17
-rwxr-xr-xetc/ci/upload_docs.sh8
6 files changed, 47 insertions, 26 deletions
diff --git a/docs/STYLE_GUIDE.md b/docs/STYLE_GUIDE.md
new file mode 100644
index 00000000000..b7a3e519b42
--- /dev/null
+++ b/docs/STYLE_GUIDE.md
@@ -0,0 +1,29 @@
+# Style Guide
+
+The majority of our style recommendations are automatically enforced via our
+automated linters. This document has guidelines that are less easy to lint for.
+
+## Shell scripts
+
+Shell scripts are OK for small tasks or wrappers, but prefer to use Python for
+anything with a hint of complexity or in general.
+
+Shell scripts should be written against bash, starting with this shebang:
+```
+#!/usr/bin/env bash
+```
+
+Note that the version of bash available on OS X by default is quite old, so be
+careful when using new features.
+
+Scripts should enable a few options at the top for robustness:
+```
+set -o errexit
+set -o nounset
+set -o pipefail
+```
+
+Quote all variables, using the full form: `"${SOME_VARIABLE}"`.
+
+Use `"$(some-command)"` instead of backticks for command substitution. Note
+that these should be quoted as well.
diff --git a/etc/ci/check_no_unwrap.sh b/etc/ci/check_no_unwrap.sh
index c2a35d06674..9f07b56aaf7 100755
--- a/etc/ci/check_no_unwrap.sh
+++ b/etc/ci/check_no_unwrap.sh
@@ -1,11 +1,12 @@
-#!/bin/bash
+#!/usr/bin/env bash
#
# Make sure listed files do not contain "unwrap"
+
set -o errexit
set -o nounset
set -o pipefail
-cd $(git rev-parse --show-toplevel) # cd into repo root so make sure paths works in any case
+cd "$(git rev-parse --show-toplevel)" # cd into repo root so make sure paths works in any case
# files that should not contain "unwrap"
FILES=("components/compositing/compositor.rs"
diff --git a/etc/ci/lockfile_changed.sh b/etc/ci/lockfile_changed.sh
index 7aa1ccccfca..e89e044f375 100755
--- a/etc/ci/lockfile_changed.sh
+++ b/etc/ci/lockfile_changed.sh
@@ -1,4 +1,9 @@
-#!/bin/bash
-diff=$(git diff -- */*/Cargo.lock)
+#!/usr/bin/env bash
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+diff="$(git diff -- */*/Cargo.lock)"
echo "$diff"
[[ ! $diff ]]
diff --git a/etc/ci/manifest_changed.sh b/etc/ci/manifest_changed.sh
index 4f84e3d9acc..31db4474099 100755
--- a/etc/ci/manifest_changed.sh
+++ b/etc/ci/manifest_changed.sh
@@ -1,4 +1,5 @@
-#!/bin/bash
+#!/usr/bin/env bash
+
set -o errexit
set -o nounset
set -o pipefail
@@ -11,6 +12,6 @@ set -o pipefail
# Adding "--binary=" to skip looking for a compiled servo binary.
./mach test-wpt --manifest-update --binary= SKIP_TESTS > /dev/null
-diff=$(git diff -- tests/*/MANIFEST.json)
+diff="$(git diff -- tests/*/MANIFEST.json)"
echo "$diff"
[[ ! $diff ]]
diff --git a/etc/ci/retry.sh b/etc/ci/retry.sh
deleted file mode 100755
index 4c036085108..00000000000
--- a/etc/ci/retry.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-# Retries a given command until it passes
-# Run as `retry.sh N command args...`
-# where `N` is the maximum number of tries, and `command args...` is the
-# command to run, with arguments
-
-n=$1
-shift; # this removes the first argument from $@
-for i in `seq $n`; do
- echo "====== RUN NUMBER: $i ======";
- if $@ # run command, check if exit code is zero
- then
- exit 0 # command passed, all is well
- fi
-done
-exit 1
diff --git a/etc/ci/upload_docs.sh b/etc/ci/upload_docs.sh
index aac1374ceda..980032a1350 100755
--- a/etc/ci/upload_docs.sh
+++ b/etc/ci/upload_docs.sh
@@ -1,10 +1,12 @@
-#!/bin/bash
+#!/usr/bin/env bash
#
# Helper script to upload docs to doc.servo.org.
# Requires ghp-import (from pip)
# GitHub API token must be passed in environment var TOKEN
-set -e
+set -o errexit
+set -o nounset
+set -o pipefail
cd "$(dirname $0)/../.."
@@ -15,4 +17,4 @@ cp etc/doc.servo.org/* target/doc/
python components/style/properties/build.py servo html
ghp-import -n target/doc
-git push -qf https://${TOKEN}@github.com/servo/doc.servo.org.git gh-pages
+git push -qf "https://${TOKEN}@github.com/servo/doc.servo.org.git" gh-pages