diff --git a/contrib/packager.io/functions.sh b/contrib/packager.io/functions.sh index 9149754a66f9..7ee1ad518bb5 100755 --- a/contrib/packager.io/functions.sh +++ b/contrib/packager.io/functions.sh @@ -117,22 +117,22 @@ function detect_envs() { pip install --require-hashes -r ${APP_HOME}/contrib/dev_reqs/requirements.txt -q # Load config - local CONF=$(cat ${INVENTREE_CONFIG_FILE} | jc --yaml) + export INVENTREE_CONF_DATA=$(cat ${INVENTREE_CONFIG_FILE} | jc --yaml) # Parse the config file - export INVENTREE_MEDIA_ROOT=$(jq -r '.[].media_root' <<< ${CONF}) - export INVENTREE_STATIC_ROOT=$(jq -r '.[].static_root' <<< ${CONF}) - export INVENTREE_BACKUP_DIR=$(jq -r '.[].backup_dir' <<< ${CONF}) - export INVENTREE_PLUGINS_ENABLED=$(jq -r '.[].plugins_enabled' <<< ${CONF}) - export INVENTREE_PLUGIN_FILE=$(jq -r '.[].plugin_file' <<< ${CONF}) - export INVENTREE_SECRET_KEY_FILE=$(jq -r '.[].secret_key_file' <<< ${CONF}) - - export INVENTREE_DB_ENGINE=$(jq -r '.[].database.ENGINE' <<< ${CONF}) - export INVENTREE_DB_NAME=$(jq -r '.[].database.NAME' <<< ${CONF}) - export INVENTREE_DB_USER=$(jq -r '.[].database.USER' <<< ${CONF}) - export INVENTREE_DB_PASSWORD=$(jq -r '.[].database.PASSWORD' <<< ${CONF}) - export INVENTREE_DB_HOST=$(jq -r '.[].database.HOST' <<< ${CONF}) - export INVENTREE_DB_PORT=$(jq -r '.[].database.PORT' <<< ${CONF}) + export INVENTREE_MEDIA_ROOT=$(jq -r '.[].media_root' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_STATIC_ROOT=$(jq -r '.[].static_root' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_BACKUP_DIR=$(jq -r '.[].backup_dir' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_PLUGINS_ENABLED=$(jq -r '.[].plugins_enabled' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_PLUGIN_FILE=$(jq -r '.[].plugin_file' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_SECRET_KEY_FILE=$(jq -r '.[].secret_key_file' <<< ${INVENTREE_CONF_DATA}) + + export INVENTREE_DB_ENGINE=$(jq -r '.[].database.ENGINE' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_DB_NAME=$(jq -r '.[].database.NAME' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_DB_USER=$(jq -r '.[].database.USER' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_DB_PASSWORD=$(jq -r '.[].database.PASSWORD' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_DB_HOST=$(jq -r '.[].database.HOST' <<< ${INVENTREE_CONF_DATA}) + export INVENTREE_DB_PORT=$(jq -r '.[].database.PORT' <<< ${INVENTREE_CONF_DATA}) else echo "# No config file found: ${INVENTREE_CONFIG_FILE}, using envs or defaults" @@ -340,3 +340,44 @@ function final_message() { echo -e " Password: ${INVENTREE_ADMIN_PASSWORD}" echo -e "####################################################################################" } + + +function update_checks() { + echo "# Running upgrade" + local old_version=$1 + local old_version_rev=$(echo ${old_version} | cut -d'-' -f1 | cut -d'.' -f2) + echo "# Old version is: ${old_version} - release: ${old_version_rev}" + + local ABORT=false + function check_config_value() { + local env_key=$1 + local config_key=$2 + local name=$3 + + local value=$(inventree config:get ${env_key}) + if [ -z "${value}" ] || [ "$value" == "null" ]; then + value=$(jq -r ".[].${config_key}" <<< ${INVENTREE_CONF_DATA}) + fi + if [ -z "${value}" ] || [ "$value" == "null" ]; then + echo "# No setting for ${name} found - please set it manually either in ${INVENTREE_CONFIG_FILE} under '${config_key}' or with 'inventree config:set ${env_key}=value'" + ABORT=true + else + echo "# Found setting for ${name} - ${value}" + fi + } + + # Custom checks if old version is below 0.8.0 + if [ "${old_version_rev}" -lt "9" ]; then + echo "# Old version is below 0.9.0 - You might be missing some configs" + + # Check for BACKUP_DIR and SITE_URL in INVENTREE_CONF_DATA and config + check_config_value "INVENTREE_SITE_URL" "site_url" "site URL" + check_config_value "INVENTREE_BACKUP_DIR" "backup_dir" "backup dir" + + if [ "${ABORT}" = true ]; then + echo "# Aborting - please set the missing values and run the update again" + exit 1 + fi + echo "# All checks passed - continuing with the update" + fi +} diff --git a/contrib/packager.io/postinstall.sh b/contrib/packager.io/postinstall.sh index 89c88833b100..297f332ec7a9 100755 --- a/contrib/packager.io/postinstall.sh +++ b/contrib/packager.io/postinstall.sh @@ -35,6 +35,14 @@ detect_initcmd detect_ip detect_python +# Check if we are updating and need to alert +echo "# Checking if update checks are needed" +if [ -z "$2" ]; then + echo "# Normal install - no need for checks" +else + update_checks $2 +fi + # create processes create_initscripts create_admin