55 lines
1.2 KiB
Plaintext
55 lines
1.2 KiB
Plaintext
|
#!/tools/bin/bash
|
||
|
|
||
|
NAME=$1
|
||
|
VERSION=$2
|
||
|
|
||
|
if [ -z $NAME ]; then
|
||
|
echo "[e] Please provide a package name.">&2
|
||
|
exit 1
|
||
|
fi
|
||
|
VERSIONS="/usr/dafuq/installed/$NAME-*"
|
||
|
if [ -z $VERSIONS ]; then
|
||
|
echo "[e] Cannot find package.">&2
|
||
|
exit 1
|
||
|
fi
|
||
|
echo "[i] Installed versions:"
|
||
|
i=0
|
||
|
for version in $VERSIONS; do
|
||
|
echo " [$i] $version"
|
||
|
i=$(expr $i + 1)
|
||
|
done
|
||
|
if [ $i == "1" ]; then
|
||
|
VERSION=$VERSIONS
|
||
|
elif [ -z $VERSION ]; then
|
||
|
echo "[e] Please provide a version number.">&2
|
||
|
exit 1
|
||
|
else
|
||
|
VERSION=$(echo $VERSIONS | cut -d" " -f $(expr $VERSION + 1))
|
||
|
if [ -z $VERSION ]; then
|
||
|
echo "[e] Incorrect version number.">&2
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
echo "[i] Removing files..."
|
||
|
MANIFEST=$(tar xfO $VERSION manifest)
|
||
|
while read -r line; do
|
||
|
linetype=$(echo $line | cut -d":" -f 1)
|
||
|
if [ $linetype == "file" ]; then
|
||
|
filename=$(echo $line | cut -d" " -f 2)
|
||
|
if [ ! -e $filename ]; then
|
||
|
echo "[w] File missing from filesystem: $filename"
|
||
|
exit 1
|
||
|
fi
|
||
|
rm $filename
|
||
|
fi
|
||
|
done <<< "$MANIFEST"
|
||
|
while read -r line; do
|
||
|
linetype=$(echo $line | cut -d":" -f 1)
|
||
|
if [ $linetype == "dir" ]; then
|
||
|
rmdir $(echo $line | cut -d" " -f 2)
|
||
|
fi
|
||
|
done <<< "$MANIFEST"
|
||
|
rm $(echo $VERSION | sed -e "s,/usr/dafuq/packages/,/usr/dafuq/installed/,")
|
||
|
echo "[i] Done."
|