zpkg/src/deploy.sh
2022-02-03 15:14:18 +01:00

65 lines
1.7 KiB
Bash

#!/bin/sh
# $1 = source , $2 = package , $3 = name
package()
{
src="$1"
pkg="$2"
unset tmpdir
if [ ! -d "$src/ROOT" ] && [ ! -d "$src/HOME" ] && [ ! -f "$src/DEPS" ] && [ ! -f "$src/DESC" ] && [ ! -d "$src/HOOKS" ]
then
tmpdir="$TMPDIR/zpkg_$(random_string 5)"
mkdir -p "$tmpdir"
cp -r "$src" "$tmpdir/ROOT"
src="$tmpdir"
fi
(
cd "$src" || exit $?
unset list
[ -f DEPS ] && list=DEPS
[ -f DESC ] && list="$list DESC"
[ -d HOME ] && list="$list HOME"
[ -d ROOT ] && list="$list ROOT"
[ -d HOOKS ] && list="$list HOOKS"
size=$(du -sb $list | awk '{print $1}' | paste -sd+ | bc)
echo "Packaging $(basename "$pkg"): $(echo "$size" | numfmt --to=iec-i)B"
cc=$compress
[ $size -gt 1048576 ] && cc=$pcompress
tar -cf - --owner=0 --group=0 $list | $cc $comparg > "$pkg"
)
[ -n "$tmpdir" ] && rm -r "$tmpdir"
return 0
}
# $1 = file
deploy_package()
{
echo "Deploying $(basename "$1"): $(du -sh "$1" | awk '{print $1}')iB"
scp "$1" $SSH_ADDRESS:'$(grep "PKG_PATH=" .zpkgconfig | cut -d"=" -f2-)'
}
deploy_folder()
{
if [ -f "$1" ] && echo "$1" | grep -q '\.tar\.'"$extension\$" # file and valid extension
then
$pcompress -dc 2>/dev/null < "$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" ] # folder
then
tmpdirar="$TMPDIR/zpkg_$(random_string 5)"
mkdir -p "$tmpdirar"
archive="$(getname "$1").tar.$extension"
package "$1" "$tmpdirar/$archive" || return $?
deploy_package "$tmpdirar/$archive" || return $?
rm -r "$tmpdirar"
else
echo "Target '$1' doesn't exist"
fi
}
update_remote_database()
{
ssh $SSH_ADDRESS sh database_update.sh $*
}