Clean up create_env.sh

Apply some shell scripting essentials:

- Use bash's [[ instead of [ test
- Set strict error and variable checking

BUG=None
TEST=Run create_env.sh

Change-Id: I3ab3e4b7b704e9128054a0a0586d136f69e89d58
Reviewed-on: https://chromium-review.googlesource.com/394866
Commit-Ready: Aviv Keshet <akeshet@chromium.org>
Tested-by: Allen Li <ayatane@chromium.org>
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
diff --git a/venv/create_env.sh b/venv/create_env.sh
index 24e71ac..d3e2d36 100755
--- a/venv/create_env.sh
+++ b/venv/create_env.sh
@@ -5,13 +5,27 @@
 
 # TODO(ayatane): Unify bin/run_sysmon.sh with this once this is stable.
 
+set -eu
+
+# Activate virtualenv
+activate() {
+  local venv_dir=$1
+  # virtualenv relies on unset variables, so we disable unset variable checking
+  # just for this.
+  set +u
+  source "$venv_dir/bin/activate"
+  set -u
+}
+
+venv_dir="venv"
+
 cd "$(dirname "$(readlink -f -- "$0")")"
-if [ requirements.txt -nt venv/timestamp ]; then
-  echo Creating or updating virtualenv in venv/
-  virtualenv venv --extra-search-dir=pip_packages
-  source venv/bin/activate
+if [[ requirements.txt -nt venv/timestamp ]]; then
+  echo "Creating or updating virtualenv in $(pwd)/$venv_dir/"
+  virtualenv "$venv_dir" --extra-search-dir=pip_packages
+  activate "$venv_dir"
   pip install --no-index -f pip_packages -r requirements.txt
-  touch venv/timestamp
+  touch "$venv_dir"/timestamp
 else
-  echo Existing virtualenv is already up to date.
+  echo "Existing virtualenv $(pwd)/$venv_dir/ is already up to date."
 fi