83 lines
1.4 KiB
Bash
83 lines
1.4 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
# builds a pak0.pak file for a respective gamedir
|
||
|
|
||
|
set -e
|
||
|
|
||
|
usage ()
|
||
|
{
|
||
|
echo Usage: `basename $0` gamedir >&2
|
||
|
exit 2
|
||
|
}
|
||
|
|
||
|
if [ $# -lt 1 ]
|
||
|
then
|
||
|
usage
|
||
|
fi
|
||
|
|
||
|
FILES_OUTDIR="$(pwd)/_build/halflife/$1"
|
||
|
FILES_MISSING="$(pwd)/_build/missing-$1-loose.txt"
|
||
|
|
||
|
find_file ()
|
||
|
{
|
||
|
SEARCHNAME=$(basename "${1}")
|
||
|
|
||
|
#echo "Looking for $SEARCHNAME"
|
||
|
|
||
|
find "./_tmp" -type f -name "${SEARCHNAME}" | while read FOUND
|
||
|
do
|
||
|
CHECK=$(sha256sum "${FOUND}" | cut -d ' ' -f 1)
|
||
|
#echo "$CHECK == $2"
|
||
|
|
||
|
if [ "${CHECK}" = "$2" ]
|
||
|
then
|
||
|
mkdir -p "${FILES_OUTDIR}/$(dirname $1)"
|
||
|
cp -v "${FOUND}" "${FILES_OUTDIR}/$1"
|
||
|
exit 0
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ ! -f "${FILES_OUTDIR}/$1" ]
|
||
|
then
|
||
|
echo "${1}" >> "$FILES_MISSING"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
find_file_whatever ()
|
||
|
{
|
||
|
echo "Looking for $1"
|
||
|
|
||
|
find "./_tmp" -type f -path "*/${2}/${1}*" | while read FOUND
|
||
|
do
|
||
|
mkdir -p "${FILES_OUTDIR}/$(dirname $1)"
|
||
|
cp -v "${FOUND}" "${FILES_OUTDIR}/$1"
|
||
|
exit 0
|
||
|
done
|
||
|
}
|
||
|
|
||
|
if [ ! -d "$FILES_OUTDIR" ]
|
||
|
then
|
||
|
echo "Please generate a pak0.pak first."
|
||
|
exit 2
|
||
|
fi
|
||
|
|
||
|
if [ -f "$FILES_MISSING" ]
|
||
|
then
|
||
|
rm -v "$FILES_MISSING"
|
||
|
fi
|
||
|
|
||
|
while read LINE
|
||
|
do
|
||
|
FILE=$(echo ${LINE} | cut -d ' ' -f 2)
|
||
|
SUM=$(echo ${LINE} | cut -d ' ' -f 1)
|
||
|
find_file ${FILE} $SUM $1
|
||
|
done < "games/$1.sha256"
|
||
|
|
||
|
# since we don't need to pass purity checks for these
|
||
|
# we'll find the next best equivalent
|
||
|
while read LINE
|
||
|
do
|
||
|
FILE=$(echo ${LINE} | cut -d ' ' -f 2)
|
||
|
find_file_whatever ${FILE} $1
|
||
|
done < "$FILES_MISSING"
|