1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #!/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
|