Optimize deploy

This commit is contained in:
zawz 2020-05-26 18:55:11 +02:00
parent 4f3322ed11
commit 074a91ea0a
5 changed files with 39 additions and 17 deletions

View file

@ -44,6 +44,6 @@ mv zpkg "$fullpath$DEST" || exit $?
# cleanup
rm -rd "$tmpdir"
# update database
ssh "$ssh" sh database_update.sh || exit $?
ssh "$ssh" sh database_update.sh zpkg || exit $?
# generate install script
ssh "$ssh" sh gen_install.sh || exit $?

View file

@ -14,12 +14,29 @@ which $compress >/dev/null 2>&1 || { echo "Compression '$compress' not installed
# iterate packages
cd "$HOME/$PKG_PATH" || exit $?
PKGLIST="$(ls ./*.tar.$extension)"
{
for I in $PKGLIST
fulllist=$(find . -name "*.tar.$extension" | sed "s|^\./||g;s|\.tar\.$extension$||g")
if [ $# -ge 1 ]
then
list=$*
else
list=$fulllist
fi
for I in $list
do
NAME=$(echo "$I" | sed 's|\.tar\..*$||g;s|^\./||g')
TIME=$(stat -c "%Y" "$I")
DEPS=$($pcompress -dc "$I" | tar -xOf - DEPS 2>/dev/null | tr -s '\n\t ' ' ')
echo "$NAME $TIME $DEPS"
TIME=$(stat -c "%Y" "$I.tar.$extension")
DEPS=$($pcompress -dc "$I.tar.$extension" | tar -xOf - DEPS 2>/dev/null | tr -s '\n\t ' ' ')
if grep -q -w "^$I" pkglist 2>/dev/null
then
sed -i "s|^$I .*\$|$I $TIME $DEPS|g" pkglist
else
echo "$I $TIME $DEPS" >> pkglist
fi
done
} > pkglist
tmpfile="/tmp/pkglist_$(tr -cd '[:alnum:]' </dev/urandom | head -c10)"
awk '{print $1}' pkglist | sort > "$tmpfile"
for I in $(echo "$fulllist" | sort | diff --new-line-format="" --unchanged-line-format="" "$tmpfile" -)
do
sed -i "/$I/d" pkglist
done
rm "$tmpfile"

View file

@ -45,12 +45,14 @@ deploy_folder()
then
$pcompress -dc >/dev/null 2>&1 | tar -tf - >/dev/null 2>&1|| { echo "File '$1' is not a valid archive" && return 1; }
deploy_package "$1" "$1" || return $?
elif [ -d "$1" ]
elif [ -d "$1" ] # folder
then
tmpdirar="/tmp/zpkg_$(random_string 5)"
mkdir -p "$tmpdirar"
archive="$(getname "$1").tar.$extension"
package "$1" "/tmp/$archive" || return $?
deploy_package "/tmp/$archive" || return $?
rm "/tmp/$archive"
package "$1" "$tmpdirar/$archive" || return $?
deploy_package "$tmpdirar/$archive" || return $?
rm "$tmpdirar/$archive"
else
echo "Target '$1' doesn't exist"
fi
@ -58,5 +60,5 @@ deploy_folder()
update_remote_database()
{
ssh $SSH_ADDRESS "~/database_update.sh"
ssh $SSH_ADDRESS sh database_update.sh $*
}

View file

@ -11,7 +11,7 @@ add_package_entry()
{
(
cd "$PKG_PATH"
if grep -q -w "$1" installed 2>/dev/null
if grep -q -w "^$1" installed 2>/dev/null
then
$2 sed "s|$1 .*\$|$1 $(date +%s)|g" -i installed
else

View file

@ -121,11 +121,14 @@ list-removed)
;;
deploy)
shift 1
for I in $*
unset pkglist
for I
do
deploy_folder "$I" || exit 1
deploy_folder "$I"
pkglist="$pkglist $(getname "$I")"
done
update_remote_database
echo "$pkglist"
update_remote_database $pkglist
;;
*) usage && exit 1 ;;
esac