diff --git a/server_deploy.sh b/server_deploy.sh index ab10fe3..626b76c 100755 --- a/server_deploy.sh +++ b/server_deploy.sh @@ -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 $? diff --git a/server_scripts/database_update.sh b/server_scripts/database_update.sh index caffa5b..3813597 100755 --- a/server_scripts/database_update.sh +++ b/server_scripts/database_update.sh @@ -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:]' "$tmpfile" +for I in $(echo "$fulllist" | sort | diff --new-line-format="" --unchanged-line-format="" "$tmpfile" -) +do + sed -i "/$I/d" pkglist +done +rm "$tmpfile" diff --git a/src/deploy.sh b/src/deploy.sh index 0d10fc6..a63a2cd 100644 --- a/src/deploy.sh +++ b/src/deploy.sh @@ -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 $* } diff --git a/src/install.sh b/src/install.sh index addf213..d173978 100644 --- a/src/install.sh +++ b/src/install.sh @@ -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 diff --git a/src/main.sh b/src/main.sh index c94716b..d74ecff 100644 --- a/src/main.sh +++ b/src/main.sh @@ -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