[pacman-dev] new script: repo-local-cleaner
Alessio 'mOLOk' Bolognino
themolok.ml at gmail.com
Fri Mar 23 18:21:46 EDT 2007
Hi list,
this is a script I wrote for myself, but Roman suggested me to send it
here, so... here it is: it's a script that removes old packages in the
local repo and optionally runs gensync at the end.
I tried to follow the standards of makepkg, feel free to ignore it,
change it, change its name and things like that.
You can even change the copyright line and put Judd's name if you want.
---------------8<----------------8<-----------------8<-------------8<
#!/bin/bash
# repo-local-cleaner : delete old packages in local repo
#
# Copyright (c) 2007 Alessio 'mOLOk' Bolognino <themolok at gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
# USA.
myver='3.0.0'
source /etc/makepkg.conf # for $CARCH and $USE_COLOR
# default settings:
PKGEXT="pkg.tar.gz"
LOCAL_REPO_DIR="/home/custompkgs"
LOCAL_SRCROOT="/var/abs/local"
LOCAL_REPO_NAME="custom"
RUN_GENSYNC="n"
if [ -r /etc/repo-local-cleaner.conf ]; then
source /etc/repo-local-cleaner.conf
fi
msg() {
if [ ! "$USE_COLOR" = "n" ]; then
echo -e "\033[1;32m==>\033[1;0m \033[1;1m$1\033[1;0m" >&2
else
echo "==> $1" >&2
fi
}
error() {
if [ ! "$USE_COLOR" = "n" ]; then
echo -e "\033[1;31m==> ERROR:\033[1;0m \033[1;1m$1\033[1;0m" >&2
else
echo "==> ERROR: $1" >&2
fi
}
usage() {
echo "repo-local-clener $myver"
echo
echo "usage: repo-local-cleaner"
echo
echo "repo-local-clener will delete old packages from the local repository."
echo "If setted in the configuration file, it can run gensync."
echo "It takes no options."
echo
}
if [ $# -ne 0 -o "$1" = "-h" -o "$1" = "--help" ]; then
usage
exit 0
fi
cd $LOCAL_REPO_DIR
count_rm=0
count_all=0
mkdir -p XXX/
for pack in $(ls -v *-${CARCH}.${PKGEXT}) ; do
pkgname=${pack%-*-*-${CARCH}.${PKGEXT}}
if [ "$p_pkgname" = "$pkgname" ]; then
mv ${p_pack} XXX/${p_pack}
let count_rm++
fi
let count_all++
p_pack=${pack}
p_pkgname=${pkgname}
done
size_removed=$(ls -sh1 XXX/ | awk '{ print $2 }' | head -1)
msg "Checking for old packages..."
if [ $count_rm = 0 ]; then
msg "No package removed"
else
msg "Removed $count_rm/$count_all old package(s) ( - ${size_removed} )"
fi
rm -fr XXX/
if [ ! "$RUN_GENSYNC" = "n" ]; then
msg "Running gensync..."
gensync $LOCAL_SRCROOT $LOCAL_REPO_DIR/$LOCAL_REPO_NAME.db.tar.gz $LOCAL_REPO_DIR/
if [ $? = 0 ]; then
msg "done!"
else
error "gensync failed :("
fi
fi
# vim: set ts=2 sw=2 noet:
---------------8<----------------8<-----------------8<-------------8<
Cheers,
--
Alessio 'mOLOk' Bolognino
Arch Linux Trusted User
http://www.archlinux.org
More information about the pacman-dev
mailing list