134 lines
4.4 KiB
Bash
Executable File
134 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Local Joomla installation at:
|
|
JOOMLADIR=~/github/joomla-cms
|
|
|
|
UPDATESERVER="kuschel.at"
|
|
# the following host must be given in .ssh/config configuration:
|
|
UPDATESERVERSSH="kuschel"
|
|
UPDATEDIR="/var/www/kuschel.at/update"
|
|
UPDATEFILE="extensions.xml"
|
|
UPDATEURL="https://kuschel.at/update"
|
|
|
|
# this is a script file to generate a zip package from this source:
|
|
SCRIPTPATH="$( cd -- "$(dirname "$0")" > /dev/null 2>&1 ; pwd -P )"
|
|
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" | awk '{print $1}' | tee "zip/depot_${version}.zip.sha512"
|
|
SHA512=$(sha512sum "zip/depot_${version}.zip" | awk '{print $1}' | tee "zip/depot_${version}.zip.sha512")
|
|
echo ${SHA512}
|
|
scp "zip/depot_${version}.zip.sha512" ${UPDATESERVERSSH}:${UPDATEDIR}/
|
|
echo "Now you have to edit the extensions.xml on the update server manually,"
|
|
|
|
read -p "or do you want to automatically adjust the extensions.xml file on the update server ${UPDATESERVER}? (y/N)" -n 1 -r
|
|
echo # (optional) move to a new line
|
|
if [[ $REPLY =~ ^[YyJy]$ ]]
|
|
then
|
|
## first fetch the file from the server
|
|
scp ${UPDATESERVERSSH}:${UPDATEDIR}/${UPDATEFILE} ${SCRIPTPATH}/
|
|
echo "Now we make a backup of this file ${UPDATEFILE}"
|
|
cp -f "${SCRIPTPATH}/${UPDATEFILE}" "${SCRIPTPATH}/${UPDATEFILE}.bak"
|
|
## now we change the right entries in the file:
|
|
xmllint --shell "${SCRIPTPATH}/${UPDATEFILE}" << EOF
|
|
cd /updates/update/version
|
|
set ${version}
|
|
cd /updates/update/downloads/downloadurl
|
|
set ${UPDATEURL}/depot_${version}.zip
|
|
cd /updates/update/sha512
|
|
set ${SHA512}
|
|
save
|
|
EOF
|
|
|
|
echo "Unified DIFF:"
|
|
diff -u "${SCRIPTPATH}/${UPDATEFILE}.bak" "${SCRIPTPATH}/${UPDATEFILE}"
|
|
echo "Copy updated file to server..."
|
|
scp "${SCRIPTPATH}/${UPDATEFILE}" ${UPDATESERVERSSH}:${UPDATEDIR}/${UPDATEFILE}
|
|
else
|
|
echo "Please edit the extensions.xml on the update server manually."
|
|
fi
|
|
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
|