base-files: use jshn lib for ubus sysupgrade argument generation
authorFlorian Eckert <fe@dev.tdt.de>
Mon, 7 Oct 2019 13:09:48 +0000 (15:09 +0200)
committerPetr Štetiar <ynezz@true.cz>
Mon, 13 Jan 2020 23:06:03 +0000 (00:06 +0100)
With this change the well known jshn library will be used, to build the
json arguments for the ubus sysupgrade method. This is also used in all
other shell program that uses JSON. This commit unifies that.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
package/base-files/files/sbin/sysupgrade

index 6c518b780eddd973966537b50d8f7c82539bb1e1..abd34bdcfb6388280e844ce370c60f23d25dc806 100755 (executable)
@@ -360,18 +360,15 @@ if [ -n "$FAILSAFE" ]; then
        printf '%s\x00%s\x00%s' "$RAM_ROOT" "$IMAGE" "$COMMAND" >/tmp/sysupgrade
        lock -u /tmp/.failsafe
 else
-       force_attr=""
-       [ $FORCE -eq 1 ] && force_attr="\"force\": true,"
-       backup_attr=""
-       [ $SAVE_CONFIG -eq 1 ] && backup_attr="\"backup\": $(json_string $CONF_TAR),"
-       ubus call system sysupgrade "{
-               \"prefix\": $(json_string "$RAM_ROOT"),
-               \"path\": $(json_string "$IMAGE"),
-               $force_attr
-               $backup_attr
-               \"command\": $(json_string "$COMMAND"),
-               \"options\": {
-                       \"save_partitions\": $SAVE_PARTITIONS
-               }
-       }"
+       json_init
+       json_add_string prefix "$RAM_ROOT"
+       json_add_string path "$IMAGE"
+       [ $FORCE -eq 1 ] && json_add_boolean force 1
+       [ $SAVE_CONFIG -eq 1 ] && json_add_string backup "$CONF_TAR"
+       json_add_string command "$COMMAND"
+       json_add_object options
+       json_add_int save_partitions "$SAVE_PARTITIONS"
+       json_close_object
+
+       ubus call system sysupgrade "$(json_dump)"
 fi