jw-pkg/scripts/list-cvs-files.sh
Jan Lindemann 3995287a46 list-cvs-files.sh: Add new features
Add support for option -n (no submodules)
Add support for project directory argument

Signed-off-by: Jan Lindemann <jan@janware.com>
2017-05-07 19:08:43 +00:00

75 lines
1.3 KiB
Bash

#!/bin/sh
export LANG=POSIX
filter_deleted()
{
local rc_file="$1"
shift
local cand
for cand in "$@"; do
grep -q "^R ./$cand/" $rc_file && continue
echo $cand
done
}
list_dirents_cvs()
{
local dirs=`sed '/^D\// !d; s%^D/%%; s%/.*%%' $1/CVS/Entries`
dirs="`filter_deleted $1/CVS/Entries $dirs`"
local cands
if [ -f $1/CVS/Entries.Log ]; then
cands="`sed '/^A D\// !d; s%^A D/%%; s%/.*%%' $1/CVS/Entries.Log`"
dirs="$dirs `filter_deleted $1/CVS/Entries.Log $cands`"
fi
local files=`sed '/^\// !d; s%/%%; s%/.*%%; s%^%%' $1/CVS/Entries`
files="`filter_deleted $1/CVS/Entries $files`"
local d f
for f in $files; do
echo $1/$f
done
for d in $dirs; do
[ "$opt_only_regular_files" != 1 ] && echo $1/$d
list_dirents_cvs $1/$d
done
}
list_dirents_git()
{
git ls-files $1
[ "$opt_no_submodules" = 1 ] || git submodule foreach 'git ls-files | sed "s|^|$path/|"'
}
list_dirents()
{
if [ -d $1/CVS ]; then
list_dirents_cvs $1
return
fi
git status >/dev/null 2>&1 || {
echo "failed to list versioned files in $1: no VCS" >&2
exit 1
}
list_dirents_git $1
}
set -- `getopt fn "$@"`
while [ "$1" != -- ]; do
case $1 in
-f)
opt_only_regular_files=1
;;
-n)
opt_no_submodules=1
;;
esac
shift
done
shift
proj_dir="$1"
[ "$proj_dir" ] && cd $proj_dir
list_dirents . | sort