| #!/bin/sh |
| # |
| # php-helper - a PHP module manager for Debian |
| # |
| # Copyright 2013-2015 Ondřej Surý <[email protected]> |
| # |
| # Permission is hereby granted, free of charge, to any person obtaining a copy of |
| # this software and associated documentation files (the "Software"), to deal in |
| # the Software without restriction, including without limitation the rights to |
| # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of |
| # the Software, and to permit persons to whom the Software is furnished to do so, |
| # subject to the following conditions: |
| # |
| # The above copyright notice and this permission notice shall be included in all |
| # copies or substantial portions of the Software. |
| # |
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
| # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
| # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
| # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| |
| warning() { |
| echo "WARNING: ${@}" >&2 |
| } |
| |
| remove_state() { |
| local action=$1 |
| local version=$2 |
| local sapi=$3 |
| local modname=$4 |
| |
| local state_dir="$(get_state_dir "$version" "$sapi")" |
| rm -f "${state_dir}/${action}_by_admin/${modname}" |
| rm -f "${state_dir}/${action}_by_maint/${modname}" |
| |
| return 0 |
| } |
| |
| mod_registry() { |
| local action=$1 |
| local version=$2 |
| local modname=$3 |
| local registry_dir="$(get_registry_dir "$version")" |
| local registry_file="${registry_dir}/${modname}" |
| |
| case $action in |
| register) |
| if [ ! -d "$registry_dir" ]; then |
| mkdir -p "$registry_dir" |
| fi |
| touch "$registry_file" |
| ;; |
| unregister) |
| rm -f "$registry_file" |
| ;; |
| status) |
| if [ -e "$registry_file" ]; then |
| return 0 |
| else |
| return 1 |
| fi |
| ;; |
| *) |
| return 1 |
| ;; |
| esac |
| |
| return 0 |
| } |
| |
| record_state() { |
| local action=$1 |
| local version=$2 |
| local sapi=$3 |
| local modname=$4 |
| |
| local state_dir="$(get_state_dir "$version" $sapi)" |
| local admin_state="${state_dir}/${action}_by_admin/$modname" |
| local maint_state="${state_dir}/${action}_by_maint/$modname" |
| |
| if [ -e "$admin_state" ]; then |
| return |
| fi |
| |
| if [ -e "$maint_state" ]; then |
| if [ "$MAINT_MODE" = "yes" ]; then |
| return |
| else |
| rm "$maint_state" |
| fi |
| fi |
| |
| # cleanup previous state |
| remove_state disabled "$version" "$sapi" "$modname" |
| remove_state enabled "$version" "$sapi" "$modname" |
| |
| if [ "$MAINT_MODE" = "yes" ]; then |
| mkdir -p "$(dirname $maint_state)" |
| touch "$maint_state" |
| else |
| mkdir -p "$(dirname $admin_state)" |
| touch "$admin_state" |
| fi |
| |
| return 0 |
| } |
| |
| output() { |
| if [ "$QUIET" != "yes" ]; then |
| echo "$@" |
| fi |
| } |
| |
| get_priority() { |
| local version=$1 |
| local sapi=$2 |
| local modname=$3 |
| |
| local source_ini="/etc/php/${version}/mods-available/${modname}.ini" |
| |
| module_ret=0 |
| module_exists "$version" "$modname" || module_ret=$? |
| |
| if [ "$module_ret" -eq 0 ]; then |
| priority=$(sed -ne "s/^;[[:space:]]*priority[[:space:]]*=[[:space:]]*\([0-9]\+\)[[:space:]]*$/\\1/p; /^[0-9]\+$/q" "$source_ini") |
| [ -z "$priority" ] && priority=20 |
| echo "$priority" |
| return 0 |
| fi |
| |
| return $module_ret |
| } |
| |
| get_live_link() { |
| local version=$1 |
| local sapi=$2 |
| local modname=$3 |
| local priority=$4 |
| echo "/etc/php/${version}/${sapi}/conf.d/${priority}-${modname}.ini" |
| } |
| |
| get_live_link_content() { |
| local version=$1 |
| local sapi=$2 |
| local modname=$3 |
| local priority=$4 |
| echo "/etc/php/${version}/mods-available/${modname}.ini" |
| } |
| |
| module_exists() { |
| local version=$1 |
| local modname=$2 |
| local source_ini="/etc/php/${version}/mods-available/${modname}.ini" |
| |
| if [ ! -r "${source_ini}" ]; then |
| return 1 |
| fi |
| return 0 |
| } |
| |
| get_state_dir() { |
| local version=$1 |
| local sapi=$2 |
| echo "/var/lib/php/modules/${version}/${sapi}" |
| return 0 |
| } |
| |
| get_registry_dir() { |
| local version=$1 |
| echo "/var/lib/php/modules/${version}/registry" |
| return 0 |
| } |
| |
| get_version_dir() { |
| echo "/usr/lib/php" |
| return 0 |
| } |
| |
| get_sapi_dir() { |
| local version=$1 |
| echo "/usr/lib/php/${version}/sapi" |
| return 0 |
| } |
| |
| list_parts() { |
| local dir=$1 |
| local regex=${2:-} |
| |
| if [ -d "$dir" ]; then |
| find "$dir" -mindepth 1 -maxdepth 1 \! \( -name '*.dpkg-old' -name '*.dpkg-new' -name '*.dpkg-dist' -name '*~' -name '*.bak' -name '*.ucf-old' -name '*.ucf-new' -name '*.ucf-dist' -name '*%' \) -printf '%f\n' |
| return $? |
| else |
| return 1 |
| fi |
| } |
| |
| list_parts_regex() { |
| local dir=$1 |
| local regex=$2 |
| if [ -d "$dir" ]; then |
| find "$dir" -mindepth 1 -maxdepth 1 -regex "$regex" -printf '%f\n' |
| return $? |
| else |
| return 1 |
| fi |
| } |