jw-pkg/scripts/collect-installed-pkg-changes.sh
Jan Lindemann fb417f438e collect-installed-pkg-changes.sh: Collect-installed-pkg-changes.sh some improvements
- Usage message
- Target option
- Only copying files differing from local directory

Signed-off-by: Jan Lindemann <jan@janware.com>
2016-10-05 19:28:44 +00:00

85 lines
1 KiB
Bash

#!/bin/bash
log()
{
echo "=== $@"
}
err()
{
log $@
}
fatal()
{
err $@
exit 1
}
lp()
{
find . -name "$1" | grep -v "/dist/\|/include/"
}
usage()
{
echo "$myname [-h] [-t target-dir ] [ package-name ]"
[ "$1" ] && exit $1
}
# -- here we go
set -- `getopt 'ht:' $*`
while [ "$1" != -- ]; do
case "$1" in
-h)
usage 0
;;
-t)
target="$2"
shift
;;
*)
usage 1
;;
esac
shift
done
shift
[ "$target" ] && {
cd $target || fatal "failed to change to target dir \"$target\""
}
proj=$1
[ "$proj" ] || {
proj=`pwd | xargs basename`
proj="$proj-run $proj-devel"
}
changed_paths=`rpm -qV $proj | sed '
/^..5.*/ !d
s%^..5...... . /%/%
'`
for p in $changed_paths; do
[ -r $p ] || {
fatal "can't read $p"
}
b=`basename $p`
lp=`lp "$b"`
[ "$lp" ] || {
fatal "$p is not in repository"
}
nl=`lp $b | wc -l`
[ $nl -gt 1 ] && {
log $p is more than once in repository:
lp $b
fatal exiting
}
diff -q $lp $p >/dev/null 2>&1 && {
continue
}
log copying $p $lp
cp $p $lp
done