aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2007-04-17 03:31:18 +0000
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2007-04-17 03:31:18 +0000
commit7657835a4681dd4b45a1df493430c00f095f9910 (patch)
treef76058223a08146e28071550647fdc2a96ce99b3
parent560fb588aa1373c21b72f39c322a37a009d3ce5e (diff)
downloadsimplepkg-7657835a4681dd4b45a1df493430c00f095f9910.tar.gz
simplepkg-7657835a4681dd4b45a1df493430c00f095f9910.tar.bz2
simplaret_search_and_delete: fix behaviour when searching for an exact package file name
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@348 04377dda-e619-0410-9926-eae83683ac58
-rwxr-xr-xtrunk/src/simplaret106
1 files changed, 77 insertions, 29 deletions
diff --git a/trunk/src/simplaret b/trunk/src/simplaret
index 5fedce7..cdcd178 100755
--- a/trunk/src/simplaret
+++ b/trunk/src/simplaret
@@ -450,37 +450,85 @@ function simplaret_purge {
function simplaret_search_and_delete {
- local file candidate place basename
+ # search and delete packages
+ # usage: simplaret_search_and_delete <package> <folder> [--silent]
- for file in `find $2/ -name $1*tgz 2> /dev/null`; do
- candidate="`basename $file`"
- if [ "`package_name $candidate`" == "$1" ]; then
- # check if has the same version and build number, otherwise erase the old one
- for result in `simplaret_search $(package_name $candidate) --basename-only`; do
- if [ "`package_name $candidate`" == "`package_name $result`" ]; then
- if [ "`package_version $candidate`" == "`package_version $result`" ] && \
- [ "`package_build $candidate`" == "`package_build $result`" ]; then
- LAST_DOWNLOADED_PACKAGE="$file"
- if [ "$3" != "--silent" ]; then
- echo Package $candidate already downloaded
- # echo Package $candidate stored at `dirname $file`
- else
- true
- # echo $file
- fi
- return 1
+ local file candidate place basename name version build
+ local name_version name_build
+
+ name="`package_name $1`"
+
+ if [ "$name" != "$1" ]; then
+ # searching by full package filename
+ name_version="`package_version $1`"
+ name_build="`package_build $1`"
+
+ for file in `find $2/ -name $name*tgz 2> /dev/null`; do
+ candidate="`basename $file`"
+ version="`package_version $candidate`"
+ build="`package_build $candidate`"
+ if [ "`package_name $candidate`" == "$name" ]; then
+
+ if [ "$name_version" == "$version" ] && \
+ [ "$name_build" == "$build" ]; then
+ LAST_DOWNLOADED_PACKAGE="$file"
+ if [ "$3" != "--silent" ]; then
+ echo Package $candidate already downloaded
+ # echo Package $candidate stored at `dirname $file`
else
- place="`dirname $file`"
- basename="`basename $file tgz`"
- rm -f $file
- rm -f $place/$candidate.slack-required
- rm -f $file.asc $place/$basename.meta $place/$basename.txt
- break
+ true
+ # echo $file
fi
- fi
- done
- fi
- done
+ return 1
+ else
+ place="`dirname $file`"
+ basename="`basename $file tgz`"
+ rm -f $file
+ rm -f $place/$candidate.slack-required
+ rm -f $file.asc $place/$basename.meta $place/$basename.txt
+ break
+ fi
+
+ fi
+ done
+
+ else
+
+ for file in `find $2/ -name $name*tgz 2> /dev/null`; do
+ candidate="`basename $file`"
+ version="`package_version $candidate`"
+ build="`package_build $candidate`"
+ if [ "`package_name $candidate`" == "$name" ]; then
+ # check if has the same version and build number, otherwise erase the old one
+ for result in `simplaret_search $(package_name $candidate) --basename-only`; do
+ if [ "`package_name $candidate`" == "`package_name $result`" ]; then
+
+ if [ "$version" == "`package_version $result`" ] && \
+ [ "$build" == "`package_build $result`" ]; then
+ LAST_DOWNLOADED_PACKAGE="$file"
+ if [ "$3" != "--silent" ]; then
+ echo Package $candidate already downloaded
+ # echo Package $candidate stored at `dirname $file`
+ else
+ true
+ # echo $file
+ fi
+ return 1
+ else
+ place="`dirname $file`"
+ basename="`basename $file tgz`"
+ rm -f $file
+ rm -f $place/$candidate.slack-required
+ rm -f $file.asc $place/$basename.meta $place/$basename.txt
+ break
+ fi
+
+ fi
+ done
+ fi
+ done
+
+ fi
}
@@ -511,7 +559,7 @@ function simplaret_get {
for repos_type in patches root repos noarch; do
simplaret_set_storage_folder
- simplaret_search_and_delete $name $storage $2
+ simplaret_search_and_delete $1 $storage $2
if [ "$?" == "1" ]; then
return 0