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