FIX: Use the return code from which correctly
authorJoel Uckelman <uckelman@nomic.net>
Fri, 6 Aug 2021 20:34:01 +0000 (21:34 +0100)
committerRafael dos Santos Silva <xfalcox@gmail.com>
Fri, 6 Aug 2021 20:49:22 +0000 (17:49 -0300)
The return code of which is the number of arguments which failed...
but what we actually want is 0 when at least one of the docker
exectutables is found and nonzero when none are found.

discourse-setup

index 3548feb19311489da7c894bda4c9ffe1bb66177e..df2d5be6908bb5a01cfa212ea269eecc0b6f478e 100755 (executable)
@@ -122,14 +122,22 @@ check_IP_match() {
 ##
 ## Do we have docker?
 ##
-check_and_install_docker () {
-  if ! which docker.io docker 2>/dev/null ; then
-    echo Failed to find docker.io or docker on your PATH.
+
+check_docker() {
+  (which docker || which docker.io) 2>/dev/null
+  echo $?
+}
+
+check_and_install_docker() {
+  found_docker=$(check_docker)
+  if [ "$found_docker" -ne 0 ]; then
+    echo Failed to find docker or docker.io on your PATH.
     read -p "Enter to install Docker from https://get.docker.com/ or Ctrl+C to exit"
     curl https://get.docker.com/ | sh
 
-    if ! which docker.io docker 2>/dev/null ; then
-      echo Still failed to find docker.io or docker on your PATH.
+    found_docker=$(check_docker)
+    if [ "$found_docker" -ne 0 ]; then
+      echo Still failed to find docker or docker.io on your PATH.
       echo Docker install failed. Quitting.
       exit
     fi