repo-add.sh.in : repo-remove improvements
* report when a package entry to be removed is not found * backup and restore eventual "deltas" files * slight optimization when looking for an entry : only look at the entries starting with $pkgname Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
This commit is contained in:
parent
f8bb69c1d2
commit
994804f20e
1 changed files with 38 additions and 12 deletions
|
@ -93,6 +93,20 @@ write_list_entry() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
find_pkgentry()
|
||||||
|
{
|
||||||
|
local pkgname=$1
|
||||||
|
local pkgentry
|
||||||
|
for pkgentry in $gstmpdir/$pkgname*; do
|
||||||
|
name=${pkgentry##*/}
|
||||||
|
if [ "${name%-*-*}" = "$pkgname" ]; then
|
||||||
|
echo $pkgentry
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
# write a delta entry to the pacman database
|
# write a delta entry to the pacman database
|
||||||
# arg1 - path to delta
|
# arg1 - path to delta
|
||||||
db_write_delta()
|
db_write_delta()
|
||||||
|
@ -186,6 +200,9 @@ db_write_entry()
|
||||||
mkdir "$pkgname-$pkgver"
|
mkdir "$pkgname-$pkgver"
|
||||||
cd "$pkgname-$pkgver"
|
cd "$pkgname-$pkgver"
|
||||||
|
|
||||||
|
# restore an eventual deltas file
|
||||||
|
[ -f "../$pkgname.deltas" ] && mv "../$pkgname.deltas" deltas
|
||||||
|
|
||||||
# create desc entry
|
# create desc entry
|
||||||
msg2 "$(gettext "Creating 'desc' db entry...")"
|
msg2 "$(gettext "Creating 'desc' db entry...")"
|
||||||
echo -e "%FILENAME%\n$(basename "$1")\n" >>desc
|
echo -e "%FILENAME%\n$(basename "$1")\n" >>desc
|
||||||
|
@ -256,18 +273,20 @@ db_write_entry()
|
||||||
# remove existing entries from the DB
|
# remove existing entries from the DB
|
||||||
# arg1 - package name
|
# arg1 - package name
|
||||||
db_remove_entry() {
|
db_remove_entry() {
|
||||||
pushd "$gstmpdir" 2>&1 >/dev/null
|
local pkgname=$1
|
||||||
|
local notfound=1
|
||||||
# remove any other package in the DB with same name
|
local pkgentry=$(find_pkgentry $pkgname)
|
||||||
local existing
|
while [ -n "$pkgentry" ]; do
|
||||||
for existing in *; do
|
notfound=0
|
||||||
if [ "${existing%-*-*}" = "$1" ]; then
|
if [ -f "$pkgentry/deltas" ]; then
|
||||||
msg2 "$(gettext "Removing existing package '%s'...")" "$existing"
|
mv "$pkgentry/deltas" "$gstmpdir/$pkgname.deltas"
|
||||||
rm -rf "$existing"
|
|
||||||
fi
|
fi
|
||||||
|
msg2 "$(gettext "Removing existing package '%s'...")" \
|
||||||
|
"$(basename $pkgentry)"
|
||||||
|
rm -rf $pkgentry
|
||||||
|
pkgentry=$(find_pkgentry $pkgname)
|
||||||
done
|
done
|
||||||
|
return $notfound
|
||||||
popd 2>&1 >/dev/null
|
|
||||||
} # end db_remove_entry
|
} # end db_remove_entry
|
||||||
|
|
||||||
check_repo_db()
|
check_repo_db()
|
||||||
|
@ -307,9 +326,16 @@ add()
|
||||||
|
|
||||||
remove()
|
remove()
|
||||||
{
|
{
|
||||||
msg "$(gettext "Searching for package '%s'...")" "$arg"
|
pkgname=$1
|
||||||
|
msg "$(gettext "Searching for package '%s'...")" "$pkgname"
|
||||||
|
|
||||||
db_remove_entry "$arg"
|
if db_remove_entry "$pkgname"; then
|
||||||
|
rm -f "$gstmpdir/$pkgname.deltas"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
error "$(gettext "Package matching '%s' not found.")" "$pkgname"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# PROGRAM START
|
# PROGRAM START
|
||||||
|
|
Loading…
Add table
Reference in a new issue