Forráskód Böngészése

Parse args before setting defaults

Freddie Sackur 2 éve
szülő
commit
5fa8ca3d88
1 módosított fájl, 88 hozzáadás és 75 törlés
  1. 88 75
      scripts/start.sh

+ 88 - 75
scripts/start.sh

@@ -30,67 +30,13 @@ if [[ ! -f "${STATE_FOLDER}/seed" ]]; then
   fi
 fi
 
-### --------------------------------
-### General variables
-### --------------------------------
-DEFAULT_TZ="Etc\/UTC"
-TZ="$(timedatectl | grep "Time zone" | awk '{print $3}' | sed 's/\//\\\//g')"
-if [[ -z "$TZ" ]]; then
-  TZ="$DEFAULT_TZ"
-fi
-NGINX_PORT=80
-NGINX_PORT_SSL=443
-DOMAIN=tipi.localhost
-SED_ROOT_FOLDER="$(echo "$ROOT_FOLDER" | sed 's/\//\\\//g')"
-DNS_IP="9.9.9.9" # Default to Quad9 DNS
-ARCHITECTURE="$(uname -m)"
-apps_repository="https://github.com/meienberger/runtipi-appstore"
-REPO_ID="$("${ROOT_FOLDER}"/scripts/git.sh get_hash ${apps_repository})"
-APPS_REPOSITORY_ESCAPED="$(echo ${apps_repository} | sed 's/\//\\\//g')"
-JWT_SECRET=$(derive_entropy "jwt")
-POSTGRES_PASSWORD=$(derive_entropy "postgres")
-TIPI_VERSION=$(get_json_field "${ROOT_FOLDER}/package.json" version)
-storage_path="${ROOT_FOLDER}"
-STORAGE_PATH_ESCAPED="$(echo "${storage_path}" | sed 's/\//\\\//g')"
-NETWORK_INTERFACE="$(ip route | grep default | awk '{print $5}' | uniq)"
-NETWORK_INTERFACE_COUNT=$(echo "$NETWORK_INTERFACE" | wc -l)
-REDIS_HOST=tipi-redis
-
-if [[ "$NETWORK_INTERFACE_COUNT" -eq 0 ]]; then
-  echo "No network interface found!"
-  exit 1
-elif [[ "$NETWORK_INTERFACE_COUNT" -gt 1 ]]; then
-  echo "Found multiple network interfaces. Please select one of the following interfaces:"
-  echo "$NETWORK_INTERFACE"
-  while true; do
-    read -rp "> " USER_NETWORK_INTERFACE
-    if echo "$NETWORK_INTERFACE" | grep -x "$USER_NETWORK_INTERFACE"; then
-      NETWORK_INTERFACE="$USER_NETWORK_INTERFACE"
-      break
-    else
-      echo "Please select one of the interfaces above. (CTRL+C to abort)"
-    fi
-  done
-fi
-INTERNAL_IP="$(ip addr show "${NETWORK_INTERFACE}" | grep "inet " | awk '{print $2}' | cut -d/ -f1)"
-
-if [[ "$ARCHITECTURE" == "aarch64" ]]; then
-  ARCHITECTURE="arm64"
-elif [[ "$ARCHITECTURE" == "armv7"* || "$ARCHITECTURE" == "armv8"* ]]; then
-  ARCHITECTURE="arm"
-elif [[ "$ARCHITECTURE" == "x86_64" ]]; then
-  ARCHITECTURE="amd64"
-fi
-
-# If none of the above conditions are met, the architecture is not supported
-if [[ "$ARCHITECTURE" != "arm64" ]] && [[ "$ARCHITECTURE" != "arm" ]] && [[ "$ARCHITECTURE" != "amd64" ]]; then
-  echo "Architecture ${ARCHITECTURE} not supported!"
-  exit 1
-fi
-
 ### --------------------------------
 ### CLI arguments
 ### --------------------------------
+NGINX_PORT=
+NGINX_PORT_SSL=
+DOMAIN=
+INTERNAL_IP=
 while [ -n "${1-}" ]; do
   case "$1" in
   --rc) rc="true" ;;
@@ -148,6 +94,73 @@ while [ -n "${1-}" ]; do
   shift
 done
 
+### --------------------------------
+### General variables
+### --------------------------------
+DEFAULT_TZ="Etc\/UTC"
+TZ="$(timedatectl | grep "Time zone" | awk '{print $3}' | sed 's/\//\\\//g')"
+if [[ -z "$TZ" ]]; then
+  TZ="$DEFAULT_TZ"
+fi
+if [[ -z "$NGINX_PORT" ]]; then
+  NGINX_PORT=80
+fi
+if [[ -z "$NGINX_PORT_SSL" ]]; then
+  NGINX_PORT_SSL=443
+fi
+if [[ -z "$DOMAIN" ]]; then
+  DOMAIN=tipi.localhost
+fi
+SED_ROOT_FOLDER="$(echo "$ROOT_FOLDER" | sed 's/\//\\\//g')"
+DNS_IP="9.9.9.9" # Default to Quad9 DNS
+ARCHITECTURE="$(uname -m)"
+apps_repository="https://github.com/meienberger/runtipi-appstore"
+REPO_ID="$("${ROOT_FOLDER}"/scripts/git.sh get_hash ${apps_repository})"
+APPS_REPOSITORY_ESCAPED="$(echo ${apps_repository} | sed 's/\//\\\//g')"
+JWT_SECRET=$(derive_entropy "jwt")
+POSTGRES_PASSWORD=$(derive_entropy "postgres")
+TIPI_VERSION=$(get_json_field "${ROOT_FOLDER}/package.json" version)
+storage_path="${ROOT_FOLDER}"
+STORAGE_PATH_ESCAPED="$(echo "${storage_path}" | sed 's/\//\\\//g')"
+REDIS_HOST=tipi-redis
+
+if [[ -z "$INTERNAL_IP" ]]; then
+  NETWORK_INTERFACE="$(ip route | grep default | awk '{print $5}' | uniq)"
+  NETWORK_INTERFACE_COUNT=$(echo "$NETWORK_INTERFACE" | wc -l)
+
+  if [[ "$NETWORK_INTERFACE_COUNT" -eq 0 ]]; then
+  echo "No network interface found!"
+  exit 1
+  elif [[ "$NETWORK_INTERFACE_COUNT" -gt 1 ]]; then
+  echo "Found multiple network interfaces. Please select one of the following interfaces:"
+  echo "$NETWORK_INTERFACE"
+  while true; do
+    read -rp "> " USER_NETWORK_INTERFACE
+    if echo "$NETWORK_INTERFACE" | grep -x "$USER_NETWORK_INTERFACE"; then
+    NETWORK_INTERFACE="$USER_NETWORK_INTERFACE"
+    break
+    else
+    echo "Please select one of the interfaces above. (CTRL+C to abort)"
+    fi
+  done
+  fi
+  INTERNAL_IP="$(ip addr show "${NETWORK_INTERFACE}" | grep "inet " | awk '{print $2}' | cut -d/ -f1)"
+fi
+
+if [[ "$ARCHITECTURE" == "aarch64" ]]; then
+  ARCHITECTURE="arm64"
+elif [[ "$ARCHITECTURE" == "armv7"* || "$ARCHITECTURE" == "armv8"* ]]; then
+  ARCHITECTURE="arm"
+elif [[ "$ARCHITECTURE" == "x86_64" ]]; then
+  ARCHITECTURE="amd64"
+fi
+
+# If none of the above conditions are met, the architecture is not supported
+if [[ "$ARCHITECTURE" != "arm64" ]] && [[ "$ARCHITECTURE" != "arm" ]] && [[ "$ARCHITECTURE" != "amd64" ]]; then
+  echo "Architecture ${ARCHITECTURE} not supported!"
+  exit 1
+fi
+
 # If port is not 80 and domain is not tipi.localhost, we exit
 if [[ "${NGINX_PORT}" != "80" ]] && [[ "${DOMAIN}" != "tipi.localhost" ]]; then
   echo "Using a custom domain with a custom port is not supported"
@@ -266,24 +279,24 @@ echo ""
 cat <<"EOF"
        _,.
      ,` -.)
-    '( _/'-\\-.               
-   /,|`--._,-^|            ,     
-   \_| |`-._/||          ,'|       
-     |  `-, / |         /  /      
-     |     || |        /  /       
-      `r-._||/   __   /  /  
+    '( _/'-\\-.
+   /,|`--._,-^|            ,
+   \_| |`-._/||          ,'|
+     |  `-, / |         /  /
+     |     || |        /  /
+      `r-._||/   __   /  /
   __,-<_     )`-/  `./  /
- '  \   `---'   \   /  / 
-     |           |./  /  
-     /           //  /     
- \_/' \         |/  /         
-  |    |   _,^-'/  /              
-  |    , ``  (\/  /_        
-   \,.->._    \X-=/^         
-   (  /   `-._//^`  
-    `Y-.____(__}              
-     |     {__)           
-           ()`     
+ '  \   `---'   \   /  /
+     |           |./  /
+     /           //  /
+ \_/' \         |/  /
+  |    |   _,^-'/  /
+  |    , ``  (\/  /_
+   \,.->._    \X-=/^
+   (  /   `-._//^`
+    `Y-.____(__}
+     |     {__)
+           ()`
 EOF
 
 port_display=""