mirror of
https://github.com/KeithDHedger/LFSPkgBuilds.git
synced 2025-08-16 15:26:47 +00:00
132 lines
3.2 KiB
Bash
Executable File
132 lines
3.2 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
#©keithhedger Sat 29 Apr 17:38:29 BST 2017 kdhedger68713@gmail.com
|
|
|
|
if [ -e ../LFSScripts/SystemData ];then
|
|
. ../LFSScripts/SystemData
|
|
else
|
|
echo "No SystemData file found ..."
|
|
exit 1
|
|
fi
|
|
|
|
(cd ../LFSScripts;./ShowSystemData)||true
|
|
|
|
RED='\e[1;31m'
|
|
GREEN='\e[1;32m'
|
|
BLACK='\e[0;30m'
|
|
BLUE='\e[1;34m'
|
|
NORMAL='\e[0;0m'
|
|
|
|
declare -a RESULTS
|
|
declare -a DEPENDSON
|
|
|
|
PACKAGETOTEST="$1"
|
|
INSTALLEDVERSION=""
|
|
UPDATETOVERSION=""
|
|
PATHTOSCRIPT=""
|
|
INLINE=${INLINE:-"-i"}
|
|
FORCEVERSION="$2"
|
|
CURRENTVERSION=""
|
|
UPDATESCRIPT=1
|
|
OPENDEPENDS=${OPENDEPENDS:-0}
|
|
|
|
stripVar ()
|
|
{
|
|
echo -e "$1"|sed -r "s/\x1b\[[0-9;]*m?//g;s/^ *//;s/ *$//"|tr -d '\n\r\t'
|
|
}
|
|
|
|
parseArray ()
|
|
{
|
|
for ((j=0;j<${#RESULTS[@]};j++))
|
|
do
|
|
if [ "X${RESULTS[j]}" != "X" ];then
|
|
case ${RESULTS[j]} in
|
|
"Script version="*)
|
|
INSTALLEDVERSION=${RESULTS[j]##*=}
|
|
INSTALLEDVERSION=$(stripVar "$INSTALLEDVERSION")
|
|
;;
|
|
*"may need updating to"*)
|
|
UPDATETOVERSION=${RESULTS[j]##* }
|
|
UPDATETOVERSION=$(stripVar "$UPDATETOVERSION")
|
|
;;
|
|
"Path to script="*)
|
|
PATHTOSCRIPT=${RESULTS[j]##*=}
|
|
PATHTOSCRIPT=${LFS}$(stripVar "$PATHTOSCRIPT")
|
|
;;
|
|
*"is Ok"*)
|
|
CURRENTVERSION="$PACKAGETOTEST-$(echo ${RESULTS[j]}|awk '{print $4}')"
|
|
CURRENTVERSION=$(stripVar "$CURRENTVERSION")
|
|
UPDATETOVERSION=$(stripVar "${RESULTS[j]}")
|
|
UPDATETOVERSION=${CURRENTVERSION##?*-}
|
|
UPDATESCRIPT=0
|
|
echo -e "${BLUE}${RESULTS[j]}${NORMAL}"
|
|
;;
|
|
esac
|
|
fi
|
|
done
|
|
}
|
|
|
|
if [ "X$PACKAGETOTEST" = "X" ];then
|
|
echo "Need package name ..."
|
|
exit 1
|
|
fi
|
|
|
|
if [ "X$FORCEVERSION}" = "X" ];then
|
|
if [ "X$(lfspkg --nocolour -R $LFS -C $PACKAGETOTEST 2>&1|grep -i 'No version info for')" != "X" ];then
|
|
echo "Can't find version info for $PACKAGETOTEST ..."
|
|
exit 1
|
|
fi
|
|
else
|
|
UPDATETOVERSION=$FORCEVERSION
|
|
fi
|
|
|
|
if [ "X${FORCEVERSION}" = "X" ];then
|
|
readarray RESULTS < <(lfspkg --nocolour -R $LFS -C $PACKAGETOTEST 2>&1)
|
|
else
|
|
readarray RESULTS < <(lfspkg --nocolour -R $LFS -S $PACKAGETOTEST 2>&1)
|
|
fi
|
|
|
|
parseArray
|
|
if [ "X$INSTALLEDVERSION" = "X" ] || [ "X$UPDATETOVERSION" = "X" ] || [ "X$PATHTOSCRIPT" = "X" ] && [ "X$CURRENTVERSION" = "X" ];then
|
|
echo -e "${RED}Can't auto-update $PACKAGETOTEST ...${NORMAL}"
|
|
lfspkg --nocolour -R $LFS -S $PACKAGETOTEST
|
|
echo "....."
|
|
lfspkg --nocolour -R $LFS -C $PACKAGETOTEST
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}Auto-update $PACKAGETOTEST $INSTALLEDVERSION and dependencies to $UPDATETOVERSION${NORMAL}\n"
|
|
|
|
readarray DEPENDSON < <(lfspkg --nocolour -R $LFS -O $PACKAGETOTEST 2>&1)
|
|
for ((j=1;j<${#DEPENDSON[@]};j++))
|
|
do
|
|
if [ "X${DEPENDSON[j]}" != "X" ];then
|
|
DEPENDFILE=${DEPENDSON[j]##*- }
|
|
DEPENDFILE=$(stripVar "$DEPENDFILE")
|
|
echo -e "${GREEN}Updating $DEPENDFILE ...${NORMAL}"
|
|
sed $INLINE "s|\([^-]\b${PACKAGETOTEST}\b\)-[0-9][.0-9]*|\1-$UPDATETOVERSION|gI;s|^\(\b${PACKAGETOTEST}\b\)-[0-9][.0-9]*|\1-$UPDATETOVERSION|gI" $DEPENDFILE
|
|
|
|
if [ $OPENDEPENDS -eq 1 ];then
|
|
xdg-open "$DEPENDFILE" &>/dev/null
|
|
fi
|
|
fi
|
|
done
|
|
|
|
echo -e "\n${GREEN}Please check $PATHTOSCRIPT ...${NORMAL}"
|
|
if [ $UPDATESCRIPT -eq 1 ];then
|
|
sed $INLINE "s|VERSION=.*|VERSION=\"${UPDATETOVERSION}\"|" "$PATHTOSCRIPT"
|
|
fi
|
|
|
|
if [ "X$UPDATE" != "X" ];then
|
|
SIMPLEUPDATE=1 lfspkg -R $LFS -U
|
|
fi
|
|
|
|
xdg-open "$PATHTOSCRIPT" &>/dev/null
|
|
lfspkg -R $LFS -W $PACKAGETOTEST 2>&1
|
|
|
|
|
|
|
|
|
|
|
|
|