devtools: fix shellcheck warnings

Fix problems that shellcheck (https://github.com/koalaman/shellcheck)
found in the shell scripts in devtools.

Change-Id: I79cd9ba08c2253bb9c85804090db74ee77a369da
Reviewed-on: https://go-review.googlesource.com/c/pkgsite-metrics/+/469535
Reviewed-by: Zvonimir Pavlinovic <zpavlinovic@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
diff --git a/devtools/deploy.sh b/devtools/deploy.sh
index 8b95673..dd6f397 100755
--- a/devtools/deploy.sh
+++ b/devtools/deploy.sh
@@ -40,7 +40,7 @@
 
   if which grants > /dev/null; then
     local allowed=false
-    while read g _ ok _; do
+    while read _ _ ok _; do
       if [[ $ok = OK ]]; then
         allowed=true
       fi
@@ -50,11 +50,11 @@
     fi
   fi
 
-  local project=$(tfvar ${env}_project)
+  local -r project=$(tfvar ${env}_project)
   if [[ $project = '' ]]; then
     die "no ${env}_project in terraform.tfvars"
   fi
-  local commit=$(git rev-parse --short HEAD)
+  local -r commit=$(git rev-parse --short HEAD)
   local unclean
   if ! clean_workspace; then
     unclean="-unclean"
@@ -66,4 +66,4 @@
     --substitutions SHORT_SHA=${commit}${unclean},_ENV=$env,_BQ_DATASET=$dataset
 }
 
-main $@
+main "$@"
diff --git a/devtools/lib.sh b/devtools/lib.sh
index ff2f3ac..56e2114 100644
--- a/devtools/lib.sh
+++ b/devtools/lib.sh
@@ -8,21 +8,21 @@
 MAXWIDTH=0
 
 if tput setaf 1 >& /dev/null; then
-  RED=`tput setaf 1`
-  GREEN=`tput setaf 2`
-  YELLOW=`tput setaf 3`
-  NORMAL=`tput sgr0`
+  RED=$(tput setaf 1)
+  GREEN=$(tput setaf 2)
+  YELLOW=$(tput setaf 3)
+  NORMAL=$(tput sgr0)
   MAXWIDTH=$(( $(tput cols) - 2 ))
 fi
 
 EXIT_CODE=0
 
-info() { echo -e "${GREEN}$@${NORMAL}" 1>&2; }
-warn() { echo -e "${YELLOW}$@${NORMAL}" 1>&2; }
-err() { echo -e "${RED}$@${NORMAL}" 1>&2; EXIT_CODE=1; }
+info() { echo -e "${GREEN}$*${NORMAL}" 1>&2; }
+warn() { echo -e "${YELLOW}$*${NORMAL}" 1>&2; }
+err() { echo -e "${RED}$*${NORMAL}" 1>&2; EXIT_CODE=1; }
 
 die() {
-  err $@
+  err "$@"
   exit 1
 }
 
@@ -32,7 +32,7 @@
 # then runs it. It sets EXIT_CODE to non-zero if the command fails, but does not exit
 # the script.
 runcmd() {
-  msg="$@"
+  msg="$*"
   if $dryrun; then
     echo -e "${YELLOW}dryrun${GREEN}\$ $msg${NORMAL}"
     return 0
@@ -43,32 +43,33 @@
     msg="${msg::$(( MAXWIDTH - 3 ))}..."
   fi
 
-  echo -e "$@\n" 1>&2;
-  $@ || err "command failed"
+  echo -e "$*\n" 1>&2;
+  "$@" || err "command failed"
 }
 
 # tfvar NAME returns the value of the terraform variable NAME.
 tfvar() {
   local v=TF_VAR_$1
-  echo ${!v}
+  echo "${!v}"
 }
 
 worker_url() {
-  local env=$1
+  local -r env=$1
   echo https://${env}-${GO_ECOSYSTEM_WORKER_URL_SUFFIX}
 }
 
 impersonation_service_account() {
-  local env=$1
+  local -r env=$1
+  local -r project=$(tfvar ${env}_project)
   case $env in
-    prod|dev) echo impersonate@$(tfvar ${env}_project).iam.gserviceaccount.com;;
-    *) die "usage: $0 (dev | prod)";;
+    prod|dev) echo impersonate@${project}.iam.gserviceaccount.com;;
+    *) die "usage: $0 (dev | prod) ...";;
   esac
 }
 
 impersonation_token() {
-  local env=$1
-  gcloud --impersonate-service-account $(impersonation_service_account $env) \
+  local -r env=$1
+  gcloud --impersonate-service-account "$(impersonation_service_account "$env")" \
     auth print-identity-token \
     --include-email
 }