]> git.plutz.net Git - shellwiki/blob - tools.sh
remove debug info
[shellwiki] / tools.sh
1 #!/bin/sh
2
3 size_human(){
4   local size="$1"
5
6   if [ $size -gt $((1024 * 1024 * 1024)) ]; then
7     size=$((size / 1024 / 1024 / 1024 * 10 + size / 1024 / 1024 % 1024 / 100))
8     printf "%i.%i GB" "$((size / 10))" "$((size % 10))"
9
10   elif [ $size -gt $((1024 * 1024)) ]; then
11     size=$((size / 1024 / 1024 * 10 + size / 1024 % 1024 / 100))
12     printf "%i.%i MB" "$((size / 10))" "$((size % 10))"
13
14   elif [ $size -gt $((1024)) ]; then
15     size=$((size / 1024 * 10 + size % 1024 / 100))
16     printf "%i.%i KB" "$((size / 10))" "$((size % 10))"
17
18   else
19     printf "%i B" "$size"
20   fi
21 }
22
23 page_glob(){
24   local pattern="$1" IFS=''
25   local glob page pagedir
26
27   case $pattern in
28   /*)
29     for glob in "$_DATA/pages"$pattern; do printf '%s\n' "${glob#"$_DATA/pages"}"; done
30     for glob in "$_EXEC/pages"$pattern; do printf '%s\n' "${glob#"$_EXEC/pages"}"; done
31     ;;
32   *)
33     for glob in "$_DATA/pages/$PATH_INFO"/$pattern; do printf '%s\n' "${glob#"$_DATA/pages/$PATH_INFO/"}"; done
34     for glob in "$_EXEC/pages/$PATH_INFO"/$pattern; do printf '%s\n' "${glob#"$_EXEC/pages/$PATH_INFO/"}"; done
35     ;;
36   esac \
37   | sort -u \
38   | while read -r page; do
39     case $page in
40       \#*|*/\#*) continue;;
41       /*) pagedir="$(PATH "$page")";;
42       *)  pagedir="$(PATH "$PATH_INFO/$page")";;
43     esac
44     [ -d "$_DATA/pages/$pagedir" -o -d "$_EXEC/pages/$pagedir" ] \
45     && printf '%s\n' "$page"
46   done
47 }
48
49 page_children(){
50   local page="${1%/}/" depth="${2:--1}"
51   local glob pagedir IFS=''
52
53   [ "$depth" -eq 0 ] && return 0
54   printf %s\\n "$page"
55
56   case $page in
57   /*)
58     for glob in "$_DATA/pages/${page}"*/; do printf '%s\n' "${glob#"$_DATA/pages"}"; done
59     for glob in "$_EXEC/pages/${page}"*/; do printf '%s\n' "${glob#"$_EXEC/pages"}"; done
60     ;;
61   *)
62     for glob in "$_DATA/pages/$PATH_INFO/${page}"*/; do printf '%s\n' "${glob#"$_DATA/pages/$PATH_INFO/"}"; done
63     for glob in "$_EXEC/pages/$PATH_INFO/${page}"*/; do printf '%s\n' "${glob#"$_EXEC/pages/$PATH_INFO/"}"; done
64     ;;
65   esac \
66   | sort -u \
67   | while read -r page; do
68     case $page in
69       \#*|*/\#*) continue;;
70       /*) pagedir="$(PATH "$page")";;
71       *)  pagedir="$(PATH "$PATH_INFO/$page")";;
72     esac
73     [ -d "$_DATA/pages/$pagedir" -o -d "$_EXEC/pages/$pagedir" ] \
74     && page_children "$page" "$((depth - 1))"
75   done
76 }