Allow VPATH usage of vc-list-files.
authorEric Blake <ebb9@byu.net>
Thu, 3 Apr 2008 14:45:00 +0000 (08:45 -0600)
committerEric Blake <ebb9@byu.net>
Thu, 3 Apr 2008 14:52:49 +0000 (08:52 -0600)
* build-aux/vc-list-files (scriptversion): Add timestamp.
(options): Add --help, --version, -C.
(CVS): Support installed cvsu.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
build-aux/vc-list-files

index 07470b1..90d0bb2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-04-03  Eric Blake  <ebb9@byu.net>
+
+       Allow VPATH usage of vc-list-files.
+       * build-aux/vc-list-files (scriptversion): Add timestamp.
+       (options): Add --help, --version, -C.
+       (CVS): Support installed cvsu.
+
 2008-04-02  Bruno Haible  <bruno@clisp.org>
 
        Avoid some "statement with no effect" warnings from gcc.
index 1e158bb..35046d5 100755 (executable)
@@ -1,6 +1,9 @@
 #!/bin/sh
 # List version-controlled file names.
 
+# Print a version string.
+scriptversion=2008-04-03.14
+
 # Copyright (C) 2006-2008 Free Software Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
 # List the specified version-controlled files.
 # With no argument, list them all.  With a single DIRECTORY argument,
 # list the version-controlled files in that directory.
-# This script must be run solely from the top of a $srcdir build directory.
 
 # If there's an argument, it must be a single, "."-relative directory name.
 # cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
 
+postprocess=
+case $1 in
+  --help) cat <<EOF
+Usage: $0 [-C SRCDIR] [DIR]
+
+Output a list of version-controlled files in DIR (default .), relative to
+SRCDIR (default .).  SRCDIR must be the top directory of a checkout.
+
+Options:
+  --help     print this help, then exit
+  --version  print version number, then exit
+  -C SRCDIR  change directory to SRCDIR before generating list
+
+Report bugs and patches to <bug-gnulib@gnu.org>.
+EOF
+    exit ;;
+
+  --version)
+    year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
+    cat <<EOF
+vc-list-files $scriptversion
+Copyright (C) $year Free Software Foundation, Inc,
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+    exit ;;
+
+  -C)
+    postprocess="| sed 's|^|$2/|'"
+    cd "$2" || exit 1
+    shift; shift ;;
+esac
+
 dir=
 case $# in
   0) ;;
   1) dir=$1 ;;
   *) echo "$0: too many arguments" 1>&2
-     echo "Usage: $0 [DIR]" 1>&2; exit 1;;
+     echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
 esac
 
 test "x$dir" = x && dir=.
 
 if test -d .git; then
-  exec git ls-files "$dir"
+  eval exec git ls-files '"$dir"' $postprocess
 elif test -d .hg; then
-  exec hg locate "$dir/*"
+  eval exec hg locate '"$dir/*"' $postprocess
 elif test -d CVS; then
   if test -x build-aux/cvsu; then
-    build-aux/cvsu --find --types=AFGM "$dir"
+    eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
+  elif (cvsu --help) >/dev/null 2>&1; then
+    eval cvsu --find --types=AFGM '"$dir"' $postprocess
   else
-    awk -F/ '{                         \
+    eval awk -F/ \''{                  \
        if (!$1 && $3 !~ /^-/) {        \
          f=FILENAME;                   \
          sub(/CVS\/Entries/, "", f);   \
          print f $2;                   \
-       }}'                             \
-      $(find ${*-*} -name Entries -print) /dev/null;
+       }}'\''                          \
+      $(find ${*-*} -name Entries -print) /dev/null' $postprocess
   fi
 else
-  echo "$0: Failed to determine type of version control used in "`pwd` 1>&2
+  echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
   exit 1
 fi
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End: