]> arthur.barton.de Git - bup.git/blob - t/lib.sh
5c5b01ee5947659b3d687ee11792374ced57371d
[bup.git] / t / lib.sh
1 # Assumes shell is Bash, and pipefail is set.
2
3 bup_t_lib_script_home=$(cd "$(dirname $0)" && pwd) || exit $?
4
5 bup-python()
6 {
7     "$bup_t_lib_script_home/../cmd/bup-python" "$@"
8 }
9
10 force-delete()
11 {
12     "$bup_t_lib_script_home/force-delete" "$@"
13 }
14
15 resolve-parent()
16 {
17     test "$#" -eq 1 || return $?
18     echo "$1" | \
19         PYTHONPATH="$bup_t_lib_script_home/../lib" bup-python -c \
20         "import sys, bup.helpers; print bup.helpers.resolve_parent(sys.stdin.readline())" \
21         || return $?
22 }
23
24 current-filesystem()
25 {
26     local kernel="$(uname -s)" || return $?
27     case "$kernel" in
28         NetBSD)
29             df -G . | sed -En 's/.* ([^ ]*) fstype.*/\1/p'
30             ;;
31         SunOS)
32             df -g . | sed -En 's/.* ([^ ]*) fstype.*/\1/p'
33             ;;
34         *)
35             df -T . | awk 'END{print $2}'
36     esac
37 }
38
39 path-filesystems()
40 (
41     # Return filesystem for each dir from $1 to /.
42     # Perhaps for /foo/bar, "ext4\next4\nbtrfs\n".
43     test "$#" -eq 1 || exit $?
44     cd "$1" || exit $?
45     current-filesystem || exit $?
46     dir="$(pwd)" || exit $?
47     while test "$dir" != /; do
48         cd .. || exit $?
49         dir="$(pwd)" || exit $?
50         current-filesystem || exit $?
51     done
52     exit 0
53 )
54
55 escape-erx()
56 {
57     sed 's/[][\.|$(){?+*^]/\\&/g' <<< "$*"
58 }