File: transformations-template.sh

package info (click to toggle)
dotdrop 1.15.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,812 kB
  • sloc: sh: 13,401; python: 8,186; makefile: 3
file content (131 lines) | stat: -rwxr-xr-x 3,305 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env bash
# author: deadc0de6 (https://github.com/deadc0de6)
# Copyright (c) 2019, deadc0de6
#
# test transformations using templates
#

## start-cookie
set -eu -o errtrace -o pipefail
cur=$(cd "$(dirname "${0}")" && pwd)
ddpath="${cur}/../"
PPATH="{PYTHONPATH:-}"
export PYTHONPATH="${ddpath}:${PPATH}"
altbin="python3 -m dotdrop.dotdrop"
if hash coverage 2>/dev/null; then
  mkdir -p coverages/
  altbin="coverage run -p --data-file coverages/coverage --source=dotdrop -m dotdrop.dotdrop"
fi
bin="${DT_BIN:-${altbin}}"
# shellcheck source=tests-ng/helpers
source "${cur}"/helpers
echo -e "$(tput setaf 6)==> RUNNING $(basename "${BASH_SOURCE[0]}") <==$(tput sgr0)"
## end-cookie

################################################################
# this is the test
################################################################

# the dotfile source
tmps=$(mktemp -d --suffix='-dotdrop-tests' || mktemp -d)
mkdir -p "${tmps}"/dotfiles
echo "dotfiles source (dotpath): ${tmps}"
# the dotfile destination
tmpd=$(mktemp -d --suffix='-dotdrop-tests' || mktemp -d)
echo "dotfiles destination: ${tmpd}"

clear_on_exit "${tmps}"
clear_on_exit "${tmpd}"

# create the config file
cfg="${tmps}/config.yaml"

cat > "${cfg}" << _EOF
trans_read:
  r_echo_abs_src: echo "\$(cat {0}); {{@@ _dotfile_abs_src @@}}" > {1}
  r_echo_var: echo "\$(cat {0}); {{@@ r_var @@}}" > {1}
  reverse_it: cat {0} | rev > {1}
trans_write:
  w_echo_key: echo "\$(cat {0}); {{@@ _dotfile_key @@}}" > {1}
  w_echo_var: echo "\$(cat {0}); {{@@ w_var @@}}" > {1}
variables:
  r_var: readvar
  w_var: writevar
config:
  backup: true
  create: true
  dotpath: dotfiles
dotfiles:
  f_def:
    dst: ${tmpd}/def
    src: def
  f_abc:
    dst: ${tmpd}/abc
    src: abc
    trans_read: r_echo_abs_src
    trans_write: w_echo_key
  f_ghi:
    dst: ${tmpd}/ghi
    src: ghi
    trans_read: r_echo_var
    trans_write: w_echo_var
  f_rev:
    dst: ${tmpd}/rev
    src: rev
    trans_read: reverse_it
profiles:
  p1:
    dotfiles:
    - f_abc
    - f_def
    - f_ghi
    - f_rev
_EOF
#cat ${cfg}

# create the dotfiles
echo 'abc' > "${tmps}"/dotfiles/abc
echo 'marker' > "${tmps}"/dotfiles/def
echo 'ghi' > "${tmps}"/dotfiles/ghi
echo '{{@@ profile @@}}' | rev > "${tmps}"/dotfiles/rev

###########################
# test install and compare
###########################

# install
cd "${ddpath}" | ${bin} install -f -c "${cfg}" -p p1 -b -V

# check dotfile
[ ! -e "${tmpd}"/def ] && exit 1
[ ! -e "${tmpd}"/abc ] && exit 1
[ ! -e "${tmpd}"/ghi ] && exit 1
[ ! -e "${tmpd}"/rev ] && exit 1
grep marker "${tmpd}"/def
cat "${tmpd}"/abc
grep "^abc; ${tmps}/dotfiles/abc$" "${tmpd}"/abc
cat "${tmpd}"/ghi
grep "^ghi; readvar$" "${tmpd}"/ghi
cat "${tmpd}"/rev
grep "^p1$" "${tmpd}"/rev

###########################
# test update
###########################

# update single file
cd "${ddpath}" | ${bin} update -f -k -c "${cfg}" -p p1 -b -V

# checks
[ ! -e "${tmps}"/dotfiles/def ] && exit 1
[ ! -e "${tmps}"/dotfiles/abc ] && exit 1
[ ! -e "${tmps}"/dotfiles/ghi ] && exit 1
[ ! -e "${tmps}"/dotfiles/rev ] && exit 1
grep marker "${tmps}"/dotfiles/def
cat "${tmps}"/dotfiles/abc
grep "^abc; ${tmps}/dotfiles/abc; f_abc$" "${tmps}"/dotfiles/abc
cat "${tmps}"/dotfiles/ghi
grep "^ghi; readvar; writevar$" "${tmps}"/dotfiles/ghi

echo "OK"
exit 0