c7ceb32905babed000110f7673633486885a8d85
[project/luci.git] / modules / luci-base / root / etc / init.d / ucitrack
1 #!/bin/sh /etc/rc.common
2
3 START=80
4 USE_PROCD=1
5
6 register_init() {
7 local config="$1"
8 local init="$2"
9 shift; shift
10
11 if [ -x "$init" ] && "$init" enabled && ! grep -sqE 'USE_PROCD=.' "$init"; then
12 logger -t "ucitrack" "Setting up /etc/config/$config reload trigger for non-procd $init"
13 procd_add_config_trigger "config.change" "$config" "$init" "$@"
14 fi
15 }
16
17 register_trigger() {
18 local sid="$1"
19 local config init exec affects affected
20
21 config_get config "$sid" TYPE
22 config_get init "$sid" init
23 config_get exec "$sid" exec
24 config_get affects "$sid" affects
25
26 if [ -n "$init" ]; then
27 register_init "$config" "/etc/init.d/$init" "reload"
28 fi
29
30 if [ -n "$exec" ]; then
31 case "$exec" in
32 /etc/init.d/*)
33 set -- $exec
34 register_init "$config" "$@"
35 ;;
36 *)
37 logger -t "ucitrack" "Setting up non-init /etc/config/$config reload handler: $exec"
38 procd_add_config_trigger "config.change" "$config" $exec
39 ;;
40 esac
41 fi
42
43 for affected in $affects; do
44 logger -t "ucitrack" "Setting up /etc/config/$config reload dependency on /etc/config/$affected"
45 procd_add_config_trigger "config.change" "$affected" \
46 ubus call service event \
47 "$(printf '{"type":"config.change","data":{"package":"%s"}}' $config)"
48 done
49 }
50
51 service_triggers() {
52 config_foreach register_trigger
53 }
54
55 start_service() {
56 config_load ucitrack
57 }