base-files: add leds migration
authorTomasz Maciej Nowak <tomek_n@o2.pl>
Thu, 21 Mar 2019 17:03:38 +0000 (18:03 +0100)
committerChristian Lamparter <chunkeey@gmail.com>
Sat, 6 Apr 2019 17:14:05 +0000 (19:14 +0200)
Currently leds migration scripts in ar71xx and lantiq share a lot of
logic and introducing leds migration to another target would mean
copying this code, again. Therefore add common logic to library in
base-files package.

Suggested-by: Petr Štetiar <ynezz@true.cz>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Signed-off-by: Tomasz Maciej Nowak <tomek_n@o2.pl>
package/base-files/files/lib/functions/migrations.sh [new file with mode: 0644]

diff --git a/package/base-files/files/lib/functions/migrations.sh b/package/base-files/files/lib/functions/migrations.sh
new file mode 100644 (file)
index 0000000..b180a02
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+. /lib/functions.sh
+
+migrate_led_sysfs() {
+       local cfg="$1"; shift
+       local tuples="$@"
+       local sysfs
+       local name
+
+       config_get sysfs ${cfg} sysfs
+       config_get name ${cfg} name
+
+       [ -z "${sysfs}" ] && return
+
+       for tuple in ${tuples}; do
+               local old=${tuple%=*}
+               local new=${tuple#*=}
+               local new_sysfs
+
+               new_sysfs=$(echo ${sysfs} | sed "s/${old}/${new}/")
+
+               [ "${new_sysfs}" = "${sysfs}" ] && continue
+
+               uci set system.${cfg}.sysfs="${new_sysfs}"
+
+               logger -t led-migration "sysfs option of LED \"${name}\" updated to ${new_sysfs}"
+       done;
+}
+
+migrate_leds() {
+       config_load system
+       config_foreach migrate_led_sysfs led "$@"
+}
+
+migrations_apply() {
+       local realm="$1"
+       [ -n "$(uci changes ${realm})" ] && uci -q commit ${realm}
+}