#!/bin/bash # Joomla installation at: JOOMLADIR="/srv/http/joomla5" UPDATESERVER="kuschel.at" # the following host must be given in .ssh/config configuration: UPDATESERVERSSH="kuschel" UPDATEDIR="/var/www/kuschel.at/update" UPDATEFILE="extensions.xml" # this is a script file to generate a zip package from this source: cd "$(dirname "$0")" cd .. # now we are at the depot directory # if there is a file named depot.xml, we ask to increase the version with read -p "Do you want to update/increase the patch (last) version number? (y/N)" -n 1 -r echo # (optional) move to a new line if [[ $REPLY =~ ^[YyJj]$ ]] then echo "Updating the version" # patch=`xmllint -xpath 'string(//*[local-name()="version"])' depot.xml | rev | cut -f1 -d. | rev` # echo "$patch" # patch=$((patch+1)) # echo "$patch" version=`xmllint -xpath 'string(//*[local-name()="version"])' depot.xml` major=`echo "$version" | cut -f1 -d.` minor=`echo "$version" | cut -f2 -d.` patch=`echo "$version" | cut -f3 -d.` echo "$version" patch=$((patch+1)) minor=$((minor)) newversion="$major.$minor.$patch" echo "$newversion" printf -v date '%(%Y-%m-%d)T\n' -1 xmllint --shell depot.xml << EOF cd extension/version set $newversion cd /extension/creationDate set $date save EOF else echo "Keep the version" fi mkdir -p zip # Generate ZIP file without directories zip, script zip -q -r zip/depot.zip * -x .git/\* -x script/\* -x zip/\* # Make a copy of the ZIP file with version added: ## get the version from depot.xml, again: version=`xmllint -xpath 'string(//*[local-name()="version"])' depot.xml` major=`echo "$version" | cut -f1 -d.` minor=`echo "$version" | cut -f2 -d.` patch=`echo "$version" | cut -f3 -d.` echo "Now the version is: ${version}" cp -f zip/depot.zip "zip/depot_${version}.zip" echo "Create sha512 checksum" sha512sum zip/depot.zip | tee zip/depot.zip.sha512 read -p "Do you want to upload the zip file to the update server \"https://kuschel.at/update\"? (y/N)" -n 1 -r echo # (optional) move to a new line if [[ $REPLY =~ ^[YyJj]$ ]] then echo "Uploading to the update server" scp "zip/depot_${version}.zip" ${UPDATESERVERSSH}:${UPDATEDIR}/ echo "Create sha512 checksum" sha512sum "zip/depot_${version}.zip" | tee "zip/depot_${version}.zip.sha512" scp "zip/depot_${version}.zip.sha512" ${UPDATESERVERSSH}:${UPDATEDIR}/ echo "Now you have to edit the extensions.xml on the update server manually." else echo "nothing to do" fi # Install this extension to the active Joomla installation per CLI read -p "Do you want to install this to the Joomla installation at \"$JOOMLADIR\"? (Y/n)" -n 1 -r echo # (optional) move to a new line if [[ $REPLY =~ ^[Nn]$ ]] then echo "Extension was not installed" else # Find the CLI php procedure, file joomla.php in cli must exists. FILE="${JOOMLADIR}/cli/joomla.php" if [ -f "$FILE" ] then echo "$FILE exists." php $FILE --version php $FILE --help php $FILE list # sudo -g http php $FILE core:update:check php $FILE core:update:check pwd # sudo -u http php $FILE extension:install --path zip/depot.zip -v php $FILE extension:install --path zip/depot.zip -v php $FILE extension:list --type component else echo "$FILE does not exists." exit 9 fi fi