#!/bin/sh
# TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
# flavor - TazPkg module
# Install package-list from a flavor

. /lib/libtaz.sh
. /usr/libexec/tazpkg/getenv
download_from() {
case "$1" in
http://* | https://* | ftp://*)
wget -c -q -T 30 -U $UA ${1%/}/$2 2>/dev/null && break;;
*)
ln -sf ${1%/}/$2 . && break;;
esac
}
download() {
local i
case "$1" in
*.tazpkg)
for i in $PRIORITY; do
if [ -n "$(awk -F$'\t' -vp="$1" 'p==$1"-"$2".tazpkg"{print $1}' \
"$i/packages.info")" ]; then
download_from "$(cat $i/mirror)" "$@" && return
fi
done
;;
esac
for i in $(cat $(for rep in $PRIORITY; do echo $rep/mirror; done) 2>/dev/null); do
download_from "$i" "$@" && break
done
}
FLAVOR="$1"
TMP_DIR=$(mktemp -d)
[ -f "$FLAVOR.flavor" ] && cp "$FLAVOR.flavor" "$TMP_DIR"
cd "$TMP_DIR"
if [ -f "$FLAVOR.flavor" ] || download "$FLAVOR.flavor"; then
zcat < "$FLAVOR.flavor" | cpio --quiet -i >/dev/null
while read pkgver; do
awk -F$'\t' -vf="$pkgver" '$1 "-" $2 == f {exit 1}' "$PKGS_DB/installed.info"
[ "$?" -eq 1 ] && continue
cd "$CACHE_DIR"
download "$pkgver.tazpkg"
cd "$TMP_DIR"
tazpkg install "$CACHE_DIR/$pkgver.tazpkg" --forced
done < "$FLAVOR.pkglist"
[ -f "$FLAVOR.nonfree" ] && \
while read pkg; do
[ -d "$INSTALLED/$pkg" ] && continue
[ ! -d "$INSTALLED/get-$pkg" ] && tazpkg get-install get-$pkg
get-$pkg
done < "$FLAVOR.nonfree"
[ -n "$purge" ] && \
for pkg in $(awk -F$'\t' '{printf "%s:%s ", $1, $2}' "$PKGS_DB/installed.info"); do
grep -q "^${pkg/:/-}$" "$FLAVOR.pkglist" && continue
grep -qs "^${pkg%:*}$" "$FLAVOR.nonfree" && continue
tazpkg remove "${pkg%:*}"
done
else
_ "Can't find flavor \"%s\". Abort." "$FLAVOR"
fi
cd "$TOP_DIR"
rm -rf "$TMP_DIR"
