diff options
Diffstat (limited to 'applications/luci-app-opkg/root/usr/libexec')
-rwxr-xr-x | applications/luci-app-opkg/root/usr/libexec/opkg-call | 59 | ||||
-rwxr-xr-x | applications/luci-app-opkg/root/usr/libexec/opkg-list | 15 |
2 files changed, 59 insertions, 15 deletions
diff --git a/applications/luci-app-opkg/root/usr/libexec/opkg-call b/applications/luci-app-opkg/root/usr/libexec/opkg-call new file mode 100755 index 000000000..593097711 --- /dev/null +++ b/applications/luci-app-opkg/root/usr/libexec/opkg-call @@ -0,0 +1,59 @@ +#!/bin/sh + +. /usr/share/libubox/jshn.sh + +action=$1 +shift + +case "$action" in + list-installed) + cat /usr/lib/opkg/status + ;; + list-available) + lists_dir=$(sed -rne 's#^lists_dir \S+ (\S+)#\1#p' /etc/opkg.conf /etc/opkg/*.conf 2>/dev/null | tail -n 1) + find "${lists_dir:-/tmp/opkg-lists}" -type f '!' -name '*.sig' | xargs -r gzip -cd + ;; + install|update|remove) + ( + opkg="opkg" + + while [ -n "$1" ]; do + case "$1" in + --autoremove|--force-overwrite|--force-removal-of-dependent-packages) + opkg="$opkg $1" + shift + ;; + -*) + shift + ;; + *) + break + ;; + esac + done + + if flock -x 200; then + $opkg $action "$@" </dev/null >/tmp/opkg.out 2>/tmp/opkg.err + code=$? + stdout=$(cat /tmp/opkg.out) + stderr=$(cat /tmp/opkg.err) + else + code=255 + stderr="Failed to acquire lock" + fi + + json_init + json_add_int code $code + [ -n "$stdout" ] && json_add_string stdout "$stdout" + [ -n "$stderr" ] && json_add_string stderr "$stderr" + json_dump + ) 200>/tmp/opkg.lock + + rm -f /tmp/opkg.lock /tmp/opkg.err /tmp/opkg.out + ;; + *) + echo "Usage: $0 {list-installed|list-available}" >&2 + echo " $0 {install|upgrade|remove} pkg[ pkg...]" >&2 + exit 1 + ;; +esac diff --git a/applications/luci-app-opkg/root/usr/libexec/opkg-list b/applications/luci-app-opkg/root/usr/libexec/opkg-list deleted file mode 100755 index 088bc6339..000000000 --- a/applications/luci-app-opkg/root/usr/libexec/opkg-list +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -case "$1" in - installed) - cat /usr/lib/opkg/status - ;; - available) - lists_dir=$(sed -rne 's#^lists_dir \S+ (\S+)#\1#p' /etc/opkg.conf /etc/opkg/*.conf 2>/dev/null | tail -n 1) - find "${lists_dir:-/tmp/opkg-lists}" -type f '!' -name '*.sig' | xargs -r gzip -cd - ;; - *) - echo "Usage: $0 {installed|available}" >&2 - exit 1 - ;; -esac |