rpcd-mod-packagelist: add package

Provides a way to acquire the list of installed packages without the
need to have opkg available. It is being used for the GSoC 17 project
implementing easy sysupgrade functionality.

Signed-off-by: Paul Spooren <paul@spooren.de>
This commit is contained in:
Paul Spooren
2017-07-25 17:54:24 +02:00
parent df1f3a41c8
commit 0d2e674aa1
3 changed files with 92 additions and 0 deletions
@@ -0,0 +1,12 @@
{
"packagelist": {
"description": "get list of installed software packages",
"read": {
"ubus": {
"packagelist": [
"list"
]
}
}
}
}
+40
View File
@@ -0,0 +1,40 @@
#!/bin/sh
. /usr/share/libubox/jshn.sh
case "$1" in
list)
json_init
json_add_object "list"
json_dump
;;
call)
case "$2" in
list)
json_init;
json_add_object "packagelist"
if [ -f /usr/lib/opkg/status ]; then
while read var p1 p2 p3; do
if [ "$var" = "Package:" ]; then
pkg="$p1"
fi
if [ "$var" = "Version:" ]; then
version="$p1"
fi
if [ "$var" = "Status:" \
-a "$p1" = "install" \
-a "$p2" = "user" \
-a "$p3" = "installed" ]; then
json_add_string "$pkg" "$version";
fi
done < /usr/lib/opkg/status
fi
json_close_object
json_dump
;;
esac
;;
esac