summaryrefslogtreecommitdiffstats
path: root/bin/chkmanifest
diff options
context:
space:
mode:
Diffstat (limited to 'bin/chkmanifest')
-rwxr-xr-xbin/chkmanifest42
1 files changed, 42 insertions, 0 deletions
diff --git a/bin/chkmanifest b/bin/chkmanifest
new file mode 100755
index 0000000..a166fe7
--- /dev/null
+++ b/bin/chkmanifest
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# Check that all the files in MANIFEST exist and that (if this is a
+# CVS checkout) that all the CVS-managed files appear in the
+# MANIFEST.
+
+verbose=yes
+MANIFEST=/tmp/H5_MANIFEST.$$
+
+# Copy the manifest file to get a list of file names.
+grep '^\.' MANIFEST | expand | cut -f1 -d' ' >$MANIFEST
+
+test "$verbose" && echo " Checking manifest..." 1>&2
+test -f $MANIFEST || exit 1
+for file in `cat $MANIFEST`; do
+ if [ ! -f $file ]; then
+ echo "- $file"
+ fail=yes
+ fi
+done
+for cvs in `find . -type d -name CVS -print`; do
+ path=`echo $cvs |sed 's/\/CVS//'`
+ for file in `grep '^\/' $cvs/Entries |cut -d/ -f2`; do
+ if (grep $path/$file $MANIFEST >/dev/null); then
+ :
+ else
+ echo "+ $path/$file"
+ fail=yes
+ fi
+ done
+done
+
+if [ "X$fail" = "Xyes" ]; then
+ cat 1>&2 <<EOF
+The MANIFEST is out of date. Files marked with a minus sign (-) no
+longer exist; files marked with a plus sign (+) are CVS-managed but do
+not appear in the MANIFEST. Please remedy the situation and try again.
+EOF
+ exit 1
+fi
+
+exit 0