diff options
author | Tomáš Chvátal <scarabeus@gentoo.org> | 2010-08-15 13:34:12 +0200 |
---|---|---|
committer | Tomáš Chvátal <scarabeus@gentoo.org> | 2010-08-15 13:34:12 +0200 |
commit | 8fab3e5bd031724433d1a38b3dbc2dfafb533ced (patch) | |
tree | 9d9164646515888b47f9c96c49c42242413cab61 /scripts | |
parent | [x11-base/xorg-server] add xmlto to be doc useflaged. Version bump to latest RC. (diff) | |
download | x11-8fab3e5bd031724433d1a38b3dbc2dfafb533ced.tar.gz x11-8fab3e5bd031724433d1a38b3dbc2dfafb533ced.tar.bz2 x11-8fab3e5bd031724433d1a38b3dbc2dfafb533ced.zip |
[scripts] Introduce helluva bash script to sync keywords.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/sync_those_damn_keywords.sh | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/scripts/sync_those_damn_keywords.sh b/scripts/sync_those_damn_keywords.sh new file mode 100755 index 00000000..7da0e94a --- /dev/null +++ b/scripts/sync_those_damn_keywords.sh @@ -0,0 +1,124 @@ +#!/bin/bash +# Sync keywords with portdir where portdir is the target one. +# Author: Tomáš Chvátal <scarabeus@gentoo.org> +# Version: 0.1 + +# temfile where we output packages list +TMPPACKAGES="/tmp/$(basename $0).packages.$$.tmp" + +############################################################################### +# get package names we have in overlay +############################################################################### +function get_packages() { + local overlay=$1 + + find "${overlay}" -name \*.ebuild | \ + sed -e "s:${overlay}::" | \ + awk -F/ '{print $1"/"$2}' | \ + sort | uniq > ${TMPPACKAGES} +} +############################################################################### +# get keywords for package | we always select latest version +############################################################################### +function get_keywords() { + local package=$1 + local keywords + + # return false if package is not in portdir + [[ -d "${PORTDIR}/${package}" ]] || return 1 + + pushd "${PORTDIR}/${package}" > /dev/null + # grep added to ignore live versions + keywords=$(pquery --max ${package} --repo=${PORTDIR} | awk -F/ '{print $2".ebuild"}' | \ + xargs sed -ne 's/^KEYWORDS="\(.*\)"/\1/p' | \ + tr '\n' ' ') + popd > /dev/null + + echo ${keywords} +} +############################################################################### +# set keywords for +############################################################################### +function set_keywords() { + local overlay=$1 + local package=$2 + + # if keywords are not set then we return + [[ "x${KEYWORDS}" == "x" ]] && return 1 + + pushd "${overlay}/${package}" > /dev/null + # first drop all keywords + ekeyword ^all *.ebuild > /dev/null + + # then set our keywords set + ekeyword ${KEYWORDS} *.ebuild > /dev/null + ekeyword ~all *.ebuild > /dev/null + popd > /dev/null + + echo "true" +} +############################################################################### +# cleanup all temporary files +############################################################################### +function regen_manifest() { + local overlay=$1 + local package=$2 + + pushd "${overlay}/${package}" > /dev/null + repoman manifest > /dev/null + popd > /dev/null +} +############################################################################### +# cleanup all temporary files +############################################################################### +function cleanup() { + rm -rf ${TMPPACKAGES} +} +############################################################################### +# print out help function +############################################################################### +function help() { + echo "Welcome to overlay KEYWORDS syncer" + echo + echo "!!!" + echo "!!! THIS SCRIPT REQUIRES sys-apps/pkgcore !!!" + echo "!!!" + echo + echo "For usage you just need to specify overlay you want to work with." + echo "Example:" + echo "$0 -o /var/tmp/myoverlay/" + echo + echo "Optionaly you can also specify location of portdir" + echo "Example:" + echo "$0 -p /var/tmp/portage/ -o /var/tmp/myoverlay/" + exit 0 +} +############################################################################### +# argument passing +############################################################################### +if [[ $1 == "--help" ]]; then + help +fi +OVERLAY= +PORTDIR=$(portageq portdir) +while getopts o:p: arg ; do + case ${arg} in + o) OVERLAY="${OPTARG}" ;; + p) PORTDIR="${OPTARG}" ;; + *) help ;; + ?) help ;; + esac +done +[[ -z "${OVERLAY}" ]] && help +############################################################################### +# main +############################################################################### +get_packages ${OVERLAY} +# loop throught all packages +cat ${TMPPACKAGES} | while read PACKAGE; do + echo " >>> Working on: ${PACKAGE}" + KEYWORDS=$(get_keywords ${PACKAGE}) + [[ "x$(set_keywords ${OVERLAY} ${PACKAGE})" == "x" ]] || \ + regen_manifest ${OVERLAY} ${PACKAGE} +done +cleanup |