#!/bin/sh # # Copyright by The HDF Group. # Copyright by the Board of Trustees of the University of Illinois. # All rights reserved. # # Check that all the files in MANIFEST exist and that (if this is a # SVN checkout) that all the SVN-managed files appear in the # MANIFEST. verbose=yes MANIFEST=/tmp/HD_MANIFEST.$$ SVNENTRY=/tmp/HD_SVNENTRY.$$ # function definitions # Main test "$verbose" && echo " Checking MANIFEST..." 1>&2 # clean up $MANIFEST file when exits trap "rm -f $MANIFEST" 0 # First make sure i am in the directory in which there is an MANIFEST file # and then do the checking from there. Will try the following, # current directory, parent directory, the directory this command resides. if [ -f MANIFEST ]; then continue elif [ -f ../MANIFEST ]; then cd .. else commanddir=`dirname $0` if [ -d "$commanddir" -a -f $commanddir/MANIFEST ]; then cd $commanddir continue else echo MANIFEST file not found. Abort. exit 1 fi fi # Check for duplicate entries. This can be done at any time, but it may as # well be sooner so that if something else fails the presence of duplicates # will already be known. errcode=0 DUPLICATES=`perl -ne 's/#.*//; next if /^\s*$/; if ($uniq{$_}++) { print $_; }' MANIFEST` if [ "$DUPLICATES" ]; then cat 1>&2 <$MANIFEST for file in `cat $MANIFEST`; do if [ ! -f $file ]; then echo "- $file" fail=yes fi done # Next check git ls-files, which gets a list of all files that are # checked in and staged to be committed. git_ls=`git ls-files` for file in $git_ls; do path="./${file}" # Ignore directories if [ ! -d $path ]; then if (grep ^$path$ $MANIFEST >/dev/null); then : else echo "+ $path" fail=yes fi fi done if [ "X$fail" = "Xyes" ]; then cat 1>&2 <&2 exit 0