#!/bin/bash
#
# postinst script
# This script executes after unpacking files from that archive and registering the product at the server.
#
# The following environment variables can be used to obtain information about the current installation:
#   PRODUCT_ID, PRODUCT_TYPE, PRODUCT_VERSION, PACKAGE_VERSION, CLIENT_DATA_DIR, DEPOT_ID

TMP_DIR=${CLIENT_DATA_DIR}/../${PRODUCT_ID}.tmp

if [ -d $TMP_DIR ]; then
	echo 'Restoring previous directories...'
	for dirname in custom; do
		for path in $TMP_DIR/$dirname; do
			if [ -d $path ]; then
				test -e $CLIENT_DATA_DIR/`basename $path` && rm -rf $CLIENT_DATA_DIR/`basename $path`
				echo "   moving $path to $CLIENT_DATA_DIR"
				mv $path $CLIENT_DATA_DIR/ || exit 1
			fi
		done
	done
fi

echo "Removing temporary files..."
rm -rf $TMP_DIR

chmod u+x,g+x $CLIENT_DATA_DIR/*.py

# Migrate encrypt_password property from old value to new default (empty)
opsi-python -c "
from opsicommon.client.opsiservice import get_service_client
from packaging.version import parse
client = get_service_client()
old_version='$OLD_PRODUCT_VERSION'
if '.' in '$OLD_PACKAGE_VERSION':
	old_version+='-$(echo $OLD_PACKAGE_VERSION | grep -o "^[^.]*")'
else:
	old_version+='-$OLD_PACKAGE_VERSION'
print('Old version', old_version)
if old_version == '-' or parse(old_version) <= parse('4.3.0.3-3'):
	print('Patching encrypt_password property to empty string')
	print('productPropertyState_updateObjects', '$PRODUCT_ID', 'encrypt_password', '$DEPOT_ID', [\"\"])
	client.productPropertyState_updateObjects([{'productId': '$PRODUCT_ID', 'propertyId': 'encrypt_password', 'objectId': '$DEPOT_ID', 'values': [\"\"]}])
	print('done')"
