From 39fd391e9b53b0e519f7b5d5bc8f3dbb39105cac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= <sandro.jaeckel@gmail.com>
Date: Fri, 18 Oct 2019 11:37:43 +0200
Subject: [PATCH] Fix ci script for manual runs

---
 build.sh | 44 +++++++++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/build.sh b/build.sh
index 96f4dcf..d94e3ac 100755
--- a/build.sh
+++ b/build.sh
@@ -4,7 +4,7 @@ set -eoux pipefail
 if [[ -z ${1:-} ]] && [[ -n ${CI:-} ]]; then
   echo 'Usage: ./build.sh VERSION_SHORT'
   exit 1
-elif [[ $CI == true ]]; then
+elif [[ ${CI:-} == true ]] || [[ -n ${1:-} ]]; then
   VERSION_SHORT="$1"
 else
   VERSION_SHORT=$(find . -maxdepth 1 -type d | sort | tail -1 | grep -o "[[0-9]].[[0-9]]*")
@@ -16,20 +16,22 @@ cd "$VERSION_SHORT" || exit 1
 VERSION=$(grep -oP '[0-9]+\.[0-9]+\.[0-9]+' Dockerfile | head -1)
 DOCKER_REPO=factoriotools/factorio
 
-if [[ $TRAVIS_PULL_REQUEST == true ]]; then
+if [[ ${TRAVIS_PULL_REQUEST:-} == true ]]; then
   TAGS="$DOCKER_REPO:$TRAVIS_PULL_REQUEST_SLUG"
 else
-  # we are either on master or on a tag build
-  if [[ $TRAVIS_BRANCH == master ]] || [[ $TRAVIS_BRANCH == "$VERSION" ]]; then
-    TAGS="$DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
-  # we are on an incremental build of a tag
-  elif [[ $VERSION == "${TRAVIS_BRANCH%-*}" ]]; then
-    TAGS="$DOCKER_REPO:$TRAVIS_BRANCH -t $DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
-  # we build a other branch than master
-  elif [[ -n $TRAVIS_BRANCH ]]; then
-    TAGS="$DOCKER_REPO:$TRAVIS_BRANCH"
-  # we are not in CI and tag version and version short
-  elif [[ $CI == "" ]]; then
+  if [[ -n ${CI:-} ]]; then
+    # we are either on master or on a tag build
+    if [[ $TRAVIS_BRANCH == master ]] || [[ $TRAVIS_BRANCH == "$VERSION" ]]; then
+      TAGS="$DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
+    # we are on an incremental build of a tag
+    elif [[ $VERSION == "${TRAVIS_BRANCH%-*}" ]]; then
+      TAGS="$DOCKER_REPO:$TRAVIS_BRANCH -t $DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
+    # we build a other branch than master
+    elif [[ -n $TRAVIS_BRANCH ]]; then
+      TAGS="$DOCKER_REPO:$TRAVIS_BRANCH"
+    fi
+  else
+    # we are not in CI and tag version and version short
     TAGS="$DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
   fi
 
@@ -45,29 +47,33 @@ fi
 docker build . -t ${TAGS[@]}
 docker images
 
+if [[ ${TRAVIS_BRANCH:-} ]]; then
+  TRAVIS_BRANCH_VERSION=${TRAVIS_BRANCH%-*}
+fi
+
 # only push when:
 # latest changes where made in the folder corosponding to the version we build, we are on master and don#t build a PR.
 if [[ $(dirname "$(git diff --name-only HEAD^)") =~ $VERSION_SHORT ]] && [[ $TRAVIS_BRANCH == master ]] && [[ $TRAVIS_PULL_REQUEST_BRANCH == "" ]] ||
   # we build a tag and we are not on master
-  [[ $VERSION == "${TRAVIS_BRANCH%-*}" ]] && [[ $TRAVIS_PULL_REQUEST_BRANCH == "" ]] ||
+  [[ $VERSION == "${TRAVIS_BRANCH_VERSION:-}" ]] && [[ $TRAVIS_PULL_REQUEST_BRANCH == "" ]] ||
   # we are not in CI
-  [[ $CI == "" ]]; then
+  [[ -z ${CI:-} ]]; then
 
-  if [[ $CI == true ]]; then
+  if [[ ${CI:-} == true ]]; then
     echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
   fi
 
   # push a tag on a branch other than master
-  if [[ -n $TRAVIS_BRANCH ]] && [[ $VERSION != "${TRAVIS_BRANCH%-*}" ]] && [[ $TRAVIS_BRANCH != "master" ]]; then
+  if [[ -n ${TRAVIS_BRANCH:-} ]] && [[ $VERSION != "${TRAVIS_BRANCH_VERSION:-}" ]] && [[ ${TRAVIS_BRANCH:-} != "master" ]]; then
     docker push "$DOCKER_REPO:$TRAVIS_BRANCH"
   fi
 
   # push an incremental tag
-  if [[ $VERSION == "${TRAVIS_BRANCH%-*}" ]]; then
+  if [[ $VERSION == "${TRAVIS_BRANCH_VERSION:-}" ]]; then
     docker push "$DOCKER_REPO:$TRAVIS_BRANCH"
   fi
 
-  if [[ -n $TRAVIS_TAG ]] || [[ $CI == "" ]]; then
+  if [[ -n ${TRAVIS_TAG:-} ]] || [[ -z ${CI:-} ]]; then
     docker push "$DOCKER_REPO:$VERSION"
     docker push "$DOCKER_REPO:$VERSION_SHORT"
   fi