diff options
Diffstat (limited to 'scripts/list-tree')
-rwxr-xr-x | scripts/list-tree | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/scripts/list-tree b/scripts/list-tree new file mode 100755 index 00000000..a1e2e8cb --- /dev/null +++ b/scripts/list-tree @@ -0,0 +1,45 @@ +#!/bin/sh +# Copyright (C) 2012 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +# List contents of a directory tree in a reproducible manner: only include +# details that we care about, and that won't be changing between test runs +# or test environments. + +set -eu + +shorttype(){ + case "$*" in + "directory") + echo d + ;; + "regular file"|"regular empty file") + echo f + ;; + "symbolic link") + echo l + ;; + *) + echo "$*" >&2 + echo U + ;; + esac +} + +export LC_ALL=C +cd "$1" +find | while read file; do + printf "%s %s\n" "$(shorttype $(stat -c %F $file))" "$file"; +done | sort |