#! /bin/bash # Last edited on 2022-08-19 10:48:18 by stolfi # Usage: "${cmd} ${dir}" # Checks whether every file in the directory ${dir} has corresponding line in # ${dir}/00-README, and vice-versa. dir="$1"; shift if [[ ! ( -d ${dir} ) ]]; then echo "** ${dir} not found or is not a directory" 1>&2 ; exit 1] fi rdm="${dir}/00-README" if [[ ! ( -s ${rdm} ) ]]; then echo "** ${rdm} not found or is empty" 1>&2 ; exit 1] fi files_dir="${dir}/.dir" # List of files in directory. files_rdm="${dir}/.rdm" # List of files named in "00-README". files_dup="${dir}/.dup" # Duplicated files named in "00-README". (cd ${dir} && ls ) \ | egrep -v -e '^[.]|00-README|[.]sh$|[.]gawk$' \ | sort \ > ${files_dir} cat ${rdm} \ | gawk '/^ *($|[#])/{ next; } //{ print $1; }' \ | sort \ > ${files_rdm} cat ${files_rdm} \ | uniq -d \ > ${files_dup} if [[ -s ${files_dup} ]]; then echo "** duplicated entries in ${rdm}:" 1>&2 cat ${files_dup} exit 1 fi only_rdm="${dir}/.rdm-only" only_dir="${dir}/.dir-only" bool 1-2 ${files_rdm} ${files_dir} > ${only_rdm} bool 1-2 ${files_dir} ${files_rdm} > ${only_dir} if [[ -s ${only_rdm} ]]; then echo "# Missing files listed in ${dir}/00-README" 1>&2 cat ${only_rdm} 1>&2 fi if [[ -s ${only_dir} ]]; then echo "# Files in ${dir}/ not listed in ${dir}/00-README" 1>&2 cat ${only_dir} 1>&2 fi