summaryrefslogtreecommitdiffstats
path: root/util/bin/magic
blob: d3e8612086350fcd4075e874fa45192ddbdfbda5 (plain)
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
#! /bin/sh
#
# magic NAME create FILE < CONTENT
# magic NAME update FILE < CONTENT
# magic NAME destroy FILE
#

bs="# begin krebs magic <$1>"
es="# end krebs magic <$1>"

has() {
  grep -q "^$bs$" $3 && grep -q "^$es$" $3
}

create() {
  destroy "$@"
  cat>>$3<<EOF
$bs
`cat`
$es
EOF
}

retrieve() {
  sed -n "/^$bs$/,/^$es$/p" $3 | sed '1d;$d'
}

update() {
  ! has "$@" || create "$@"
}

destroy() {
  if has "$@"; then
    cache="`cat $3`"
    echo "$cache" | sed "/^$bs$/,/^$es$/d" >$3
  fi
}

case $2 in
  (create) create "$@" ;;
  (retrieve) retrieve "$@" ;;
  (update) update "$@" ;;
  (destroy) destroy "$@" ;;
  (*)
    echo 'Error 1: You are made of stupid!' >&2
    exit 23
esac