diff options
Diffstat (limited to 'modules/blobs/tree.sh')
-rw-r--r-- | modules/blobs/tree.sh | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/modules/blobs/tree.sh b/modules/blobs/tree.sh index f08db42..3953219 100644 --- a/modules/blobs/tree.sh +++ b/modules/blobs/tree.sh @@ -25,10 +25,10 @@ main() { local id name prefix has_prefix last case $# in 0) errusage;; - 1) id=$1; name=.;; - 2) id=$1; name=$2;; prefix=''; has_prefix=false;; - 3) id=$1; name=$2;; prefix=$3; has_prefix=true;; - 3) id=$1; name=$2;; prefix=$3; has_prefix=true; last=$4;; + 1) id=$1; name=. ; prefix=''; has_prefix=false; last='';; + 2) id=$1; name=$2; prefix=''; has_prefix=false; last='';; + 3) id=$1; name=$2; prefix=$3; has_prefix=true ; last='';; + 4) id=$1; name=$2; prefix=$3; has_prefix=true ; last=$4;; *) errusage;; esac @@ -37,10 +37,12 @@ main() { a='├── ' b='│ ' c='└── ' + d=' ' else a='|-- ' b='| ' c='`-- ' + d=' ' fi local pfix_self pfix_chld @@ -48,25 +50,28 @@ main() { pfix_self='' pfix_chld='' else - pfix_self="$prefix$a" - pfix_chld="$prefix$b" - if [[ -n "$last" ]]; then + if [[ -z "$last" ]]; then + pfix_self="$prefix$a" + pfix_chld="$prefix$b" + else pfix_self="$prefix$c" + pfix_chld="$prefix$d" fi fi printf "%s$(_ '%s\t(%s)')\n" "$pfix_self" "$name" "$id" if [[ "$id" == d:* ]]; then local lastname - lastname="$("$RVS" get.d "$id" /dev/stdout | sed -n '$/.*\t//p')" + lastname="$("$RVS" blobs/get.f "$id" /dev/stdout| sed -n $'$s/.*\t//p')" local perm user group id name + IFS=$'\t' while read -r perm user group id name; do if [[ "$name" != "$lastname" ]]; then - "$RVS" tree "$id" "$name" "$pfix_chld" + "$RVS" blobs/tree "$id" "$name" "$pfix_chld" else - "$RVS" tree "$id" "$name" "$pfix_chld" t + "$RVS" blobs/tree "$id" "$name" "$pfix_chld" t fi - done < <("$RVS" get.d "$id" /dev/stdout) + done < <("$RVS" blobs/get.f "$id" /dev/stdout) fi } |