Initial commit
This commit is contained in:
70
roles/gekmihesg.openwrt/library/openwrt_opkg.sh
Normal file
70
roles/gekmihesg.openwrt/library/openwrt_opkg.sh
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/bin/sh
|
||||
# Copyright (c) 2017 Markus Weippert
|
||||
# GNU General Public License v3.0 (see https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
PARAMS="
|
||||
name=pkg/str/r
|
||||
state/str//present
|
||||
force/str
|
||||
update_cache/bool
|
||||
autoremove/bool
|
||||
nodeps/bool
|
||||
"
|
||||
|
||||
query_package() {
|
||||
[ -n "$(opkg status "$1")" ]
|
||||
}
|
||||
|
||||
install_packages() {
|
||||
local _IFS pkg
|
||||
_IFS="$IFS"; IFS=","; set -- $name; IFS="$_IFS"
|
||||
for pkg; do
|
||||
! query_package "$pkg" || continue
|
||||
[ -n "$_ansible_check_mode" ] || {
|
||||
try opkg install$force $nodeps "$pkg"
|
||||
query_package "$pkg" || fail "failed to install $pkg: $_result"
|
||||
}
|
||||
changed
|
||||
done
|
||||
}
|
||||
|
||||
remove_packages() {
|
||||
local _IFS pkg
|
||||
_IFS="$IFS"; IFS=","; set -- $name; IFS="$_IFS"
|
||||
for pkg; do
|
||||
query_package "$pkg" || continue
|
||||
[ -n "$_ansible_check_mode" ] || {
|
||||
try opkg remove$force $autoremove $nodeps "$pkg"
|
||||
! query_package "$pkg" || fail "failed to remove $pkg: $_result"
|
||||
}
|
||||
changed
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
case "$state" in
|
||||
present|installed|absent|removed) :;;
|
||||
*) fail "state must be present or absent";;
|
||||
esac
|
||||
[ -z "$force" ] || {
|
||||
case "$force" in
|
||||
depends|maintainer|reinstall|overwrite|downgrade|space) :;;
|
||||
postinstall|remove|checksum|removal-of-dependent-packages) :;;
|
||||
*) fail "unknown force option";;
|
||||
esac
|
||||
force=" --force-$force"
|
||||
}
|
||||
[ -z "$autoremove" ] || {
|
||||
autoremove=" --autoremove"
|
||||
}
|
||||
|
||||
[ -z "$nodeps" ] || {
|
||||
nodeps=" --nodeps"
|
||||
}
|
||||
|
||||
[ -z "$update_cache" -o -n "$_ansible_check_mode" ] || try opkg update
|
||||
case "$state" in
|
||||
present|installed) install_packages;;
|
||||
absent|removed) remove_packages;;
|
||||
esac
|
||||
}
|
||||
Reference in New Issue
Block a user