86 lines
2.3 KiB
Text
86 lines
2.3 KiB
Text
|
#!/bin/sh -e
|
||
|
# __nextcloud_app/gencode-remote
|
||
|
|
||
|
# Handles a nextcloud app.
|
||
|
|
||
|
|
||
|
# Call the nextcloud occ script as the intended user. Maybe this can be a bit
|
||
|
# more effictive with user switching, but currently the easiest way of doing
|
||
|
# it.
|
||
|
#
|
||
|
# All arguments are directly passed to occ (injection alarm ;-) )
|
||
|
occ() {
|
||
|
# su creates a new shell, so it does not affect the current session
|
||
|
# will not use -q as it supresses errors, too
|
||
|
cat << SHELL
|
||
|
su -s /bin/sh -l "$www_user" -- -e <<'SU'
|
||
|
cd '$cloud' && php occ --no-warnings --no-interaction --no-ansi $@
|
||
|
SU
|
||
|
SHELL
|
||
|
}
|
||
|
|
||
|
|
||
|
# Get the app id
|
||
|
appid="$__object/parameter/appid"
|
||
|
if [ -f "$appid" ]; then
|
||
|
appid="$(cat "$appid")"
|
||
|
else
|
||
|
appid="$__object_id"
|
||
|
fi
|
||
|
|
||
|
# Get the app state
|
||
|
state_is="$(cat "$__object/explorer/state")"
|
||
|
state_should="$(cat "$__object/parameter/state")"
|
||
|
|
||
|
# Get general parameters
|
||
|
cloud="$(cat "$__object/parameter/cloud")"
|
||
|
www_user="$(cat "$__object/parameter/www-user")"
|
||
|
|
||
|
|
||
|
# Abort if nextcloud is not installed
|
||
|
if [ -z "$state_is" ]; then
|
||
|
printf "No nextcloud installation could be detected in '%s' ..\n" "$cloud" >&2
|
||
|
echo "Use the type __nextcloud to ensure the installation and mark it as dependency for this type!" >&2
|
||
|
exit 2
|
||
|
fi
|
||
|
|
||
|
|
||
|
# Check if the state changes
|
||
|
if [ "$state_is" != "$state_should" ]; then
|
||
|
# check what to do
|
||
|
case "$state_should" in
|
||
|
enabled)
|
||
|
if [ "$state_is" = "disabled" ]; then
|
||
|
occ app:enable "'$appid'"
|
||
|
echo enabled >> "$__messages_out"
|
||
|
else
|
||
|
occ app:install "'$appid'"
|
||
|
echo installed >> "$__messages_out"
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
disabled)
|
||
|
if [ "$state_is" = "absent" ]; then
|
||
|
occ app:install --keep-disabled "'$appid'"
|
||
|
echo installed >> "$__messages_out"
|
||
|
else
|
||
|
occ app:disable "'$appid'"
|
||
|
echo disabled >> "$__messages_out"
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
present)
|
||
|
if [ "$state_is" = "absent" ]; then
|
||
|
occ app:install "'$appid'"
|
||
|
echo installed >> "$__messages_out"
|
||
|
fi
|
||
|
# else, everything is ok
|
||
|
;;
|
||
|
|
||
|
absent)
|
||
|
occ app:remove "'$appid'"
|
||
|
echo removed >> "$__messages_out"
|
||
|
;;
|
||
|
esac
|
||
|
fi
|