59 lines
1.2 KiB
Bash
Executable file
59 lines
1.2 KiB
Bash
Executable file
#!/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:-/usr/lib/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
|