freebsd_amp_hwpstate/release/scripts/X11/generate_plists.sh

76 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
#
# This script generates the list of files stored in a set of tarballs. For
# each argument, it uses tar to extract the list of contents and then outputs
# the list to a file with the same base name and the extension "plist".
# generate_plist <tar archive> <packing list>
#
# Takes the archive listed in the first argument and generates a corresponding
# plist file to the name listed in the second argument.
generate_plist() {
echo "Generating $2 from $1..."
tar_arguments='tf';
# handle gzip/bzip2/compress
case $1 in
*gz)
tar_arguments="${tar_arguments}z"
;;
*bz)
tar_arguments="${tar_arguments}y"
;;
*Z)
tar_arguments="${tar_arguments}Z"
;;
esac
tar ${tar_arguments} $1 > $2
}
# output the usage
#
usage() {
echo "$0 <tarball_dir> <plist_dir>"
echo
echo "Where <tarball_dir> is a directory containing all the X tarballs"
echo "in their proper directory structure and <plist_dir> is a"
echo "directory to put all the packing lists under."
exit 1
}
# copy the directory structure of the tarball directory over into the
# packing list directory
#
mirror_directories() {
echo "Creating packing list directory structure..."
find ${tarball_dir} -type d | \
sed -e "s:^${tarball_dir}:mkdir -p ${plist_dir}:" | \
sh -x || exit 1
}
# build all the package lists
#
build_plists() {
for archive in `find ${tarball_dir} ! -type d`; do
plist=`echo ${archive} | \
sed -e "s/^${tarball_dir}/${plist_dir}/"`.plist
generate_plist ${archive} ${plist}
done
}
# check for enough arguments
if [ $# -ne 2 ]; then
usage
fi
# setup the variables
tarball_dir=$1
plist_dir=$2
# do all the work
if mirror_directories; then
build_plists
fi