summaryrefslogtreecommitdiff
path: root/modules/blobs/tree.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/blobs/tree.sh')
-rw-r--r--modules/blobs/tree.sh27
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
}