53 lines
1.2 KiB
Bash
53 lines
1.2 KiB
Bash
#!/bin/sh
|
|
|
|
# $1 = file , $2 = prefix
|
|
unpack()
|
|
{
|
|
echo "Unpacking $1"
|
|
cat "$1" | $pcompress -dc 2>/dev/null | tar -xf -
|
|
}
|
|
|
|
# $1 = package , $2 = prefix
|
|
add_package_entry()
|
|
{
|
|
(
|
|
cd "$PKG_PATH"
|
|
if grep -q "^$1 " installed 2>/dev/null
|
|
then
|
|
$2 sed "s|$1 .*\$|$1 $(date +%s)|g" -i installed
|
|
else
|
|
$2 sh -c "echo '$1 $(date +%s)' >> installed"
|
|
$2 chmod a+r installed
|
|
fi
|
|
)
|
|
}
|
|
|
|
# $1 = source_dir , $2 = dest_dir , $3 = prefix
|
|
copy_files() {
|
|
$3 cp -r "$1/." "$2"
|
|
}
|
|
|
|
# $1 = package , $2 = prefix
|
|
install_package()
|
|
{
|
|
[ "$1" = "$fname" ] && [ -z "$opt_R" ] && _self_update=y && return 0
|
|
echo "Installing $1"
|
|
tmpdir="$TMPDIR/zpkg_$(random_string 5)"
|
|
mkdir -p "$tmpdir"
|
|
(
|
|
cd "$tmpdir" || exit $?
|
|
fetch_package "$1" || { echo "Package '$1' not found" >&2 && return 1; }
|
|
$2 cp "$1.tar.$extension" "$PKG_PATH"
|
|
$2 chmod a+r "$PKG_PATH/$1.tar.$extension"
|
|
(
|
|
umask a+rx
|
|
unpack "$1.tar.$extension" $2 || return $?
|
|
copy_files ROOT / $2 o+rx 2>/dev/null || return $?
|
|
) || return $?
|
|
copy_files HOME "$HOME" 2>/dev/null
|
|
add_package_entry "$1" $2
|
|
)
|
|
ret=$?
|
|
rm -rd "$tmpdir" 2>/dev/null
|
|
return $ret
|
|
}
|