Skip to content

Commit

Permalink
Clean up CI bash scripts, add docs/STYLE_GUIDE.md
Browse files Browse the repository at this point in the history
  • Loading branch information
aneeshusa committed May 1, 2016
1 parent a868bb2 commit 1e0d039
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 16 deletions.
29 changes: 29 additions & 0 deletions 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.
5 changes: 3 additions & 2 deletions 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"
Expand Down
9 changes: 7 additions & 2 deletions 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 ]]
5 changes: 3 additions & 2 deletions etc/ci/manifest_changed.sh
@@ -1,4 +1,5 @@
#!/bin/bash
#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail
Expand All @@ -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 ]]
16 changes: 9 additions & 7 deletions etc/ci/retry.sh
@@ -1,17 +1,19 @@
#!/bin/bash
#!/usr/bin/env 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
set -o errexit
set -o nounset
set -o pipefail

n="$1"
shift; # this removes the first argument from $@
for i in `seq $n`; do
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
# Run command and exit success if return code is 0, else ignore it
"$@" && exit 0 || true
done
exit 1
8 changes: 5 additions & 3 deletions 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)/../.."

Expand All @@ -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

0 comments on commit 1e0d039

Please sign in to comment.