Hi guys,
have you ever wondered, which files in your config space are all
affected by a specific class? For instance if you want to duplicate that
class as the starting point for a new class, or rename it, etc.? Well, I
wrote a little script to do this job for me. Here's an example of how
it's used:
% grepclass DEBIAN
Defined in: ./class/50-host-classes
Found script directory: ./scripts/DEBIAN
Found hook: ./hooks/instsoft.DEBIAN
Found package configuration: ./package_config/DEBIAN
Found additional package configuration: ./package_config/FAIBASE
Found debconf configuration: ./debconf/DEBIAN
Found file: ./files/etc/kernel-img.conf/DEBIAN
Found file: ./files/boot/grub/menu.lst/DEBIAN
Used conditionally in: ./scripts/LAST/50-misc
Feedback and patches are welcome.
Regards,
Michael
#! /bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 class [directory]"
exit 1
fi
class=$1
if [ -n "$2" ]; then
dir=$2
else
dir=.
fi
for x in `egrep -l "([[:space:]'\"]|^)$class([[:space:]'\"]|\$)" $dir/class/*`;
do
[ -x "$x" ] && echo "Defined in: $x"
done
for x in `ls $dir/basefiles/$class.t* 2>/dev/null`; do
echo "Found basefile: $x"
done
[ -d $dir/scripts/$class ] && echo "Found script directory: $dir/scripts/$class"
for x in `ls $dir/hooks/*.$class 2>/dev/null`; do
echo "Found hook: $x"
done
[ -f $dir/package_config/$class ] && echo "Found package configuration:
$dir/package_config/$class"
for x in `egrep -l "PACKAGES.+$class" $dir/package_config/*`; do
echo "Found additional package configuration: $x"
done
[ -f $dir/debconf/$class ] && echo "Found debconf configuration:
$dir/debconf/$class"
[ -f $dir/disk_config/$class ] && echo "Found disk configuration:
$dir/disk_config/$class"
for x in `find $dir/files -name $class -o -name \'$class.t*\'`; do
echo "Found file: $x"
done
for x in `egrep -l "ifclass.+$class" $dir/scripts/*/* $dir/hooks/* $(find
$dir/files -name postinst)`; do
echo "Used conditionally in: $x"
done