[Koha-patches] [PATCH] Bug 10104 - make koha-disable more robust
Tomas Cohen Arazi
tomascohen at gmail.com
Tue Apr 23 18:35:11 CEST 2013
koha-disable now:
- checks for the existence of the instance before any actions on it.
- checks if the instance is already disabled before touching anything (warns otherwise)
- only reloads apache if needed
- handles more than one instance name.
- changed the docs to acknowledge the previous item.
To test:
- Apply the patch, build your package
- Run koha-disable on
- Non existent instance (try names that are prefix and suffix of a valid one too please)
- Already disabled instance name.
- Enabled instance name.
It should work as expected and warn the user on the expected wrong cases.
Regards
To+
Sponsored-by: Universidad Nacional de Córdoba
---
debian/docs/koha-disable.xml | 6 ++--
debian/scripts/koha-disable | 72 ++++++++++++++++++++++++++++++++++++++----
2 files changed, 69 insertions(+), 9 deletions(-)
diff --git a/debian/docs/koha-disable.xml b/debian/docs/koha-disable.xml
index 1bc9ca3..593a6a5 100644
--- a/debian/docs/koha-disable.xml
+++ b/debian/docs/koha-disable.xml
@@ -17,18 +17,18 @@
<refnamediv>
<refname>koha-disable</refname>
- <refpurpose>Disable a Koha instance.</refpurpose>
+ <refpurpose>Disable Koha instances.</refpurpose>
<refclass>UNIX/Linux</refclass>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
- <command>koha-disable</command> <arg choice="req" rep="norepeat"><replaceable>instancename</replaceable></arg>
+ <command>koha-disable</command> <arg choice="req" rep="repeat"><replaceable>instancename</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1><title>Description</title>
- <para>Disable a Koha instance.</para>
+ <para>Disable Koha instances.</para>
</refsect1>
<refsect1><title>See also</title>
diff --git a/debian/scripts/koha-disable b/debian/scripts/koha-disable
index 5d7aa36..7affe5e 100755
--- a/debian/scripts/koha-disable
+++ b/debian/scripts/koha-disable
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# koha-disable -- disable a Koha instance.
+# koha-disable -- disable Koha instances.
# Copyright 2010 Catalyst IT, Ltd
#
# This program is free software: you can redistribute it and/or modify
@@ -20,20 +20,80 @@
set -e
-die() {
+die()
+{
echo "$@" 1>&2
exit 1
}
+warn()
+{
+ echo "$@" 1>&2
+}
+
+is_enabled()
+{
+ local instancename=$1
+
+ if ! is_instance $instancename; then
+ return 1
+ fi
+
+ if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
+ "/etc/apache2/sites-available/$instancename" ; then
+ return 1
+ else
+ return 0
+ fi
+}
+
+is_instance()
+{
+ local instancename=$1
+
+ if find /etc/koha/sites -mindepth 1 -maxdepth 1 \
+ -type d -printf '%f\n'\
+ | grep -q -x $instancename ; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+disable_instance()
+{
+ local instancename=$1
+
+ if is_enabled $instancename; then
+ sed -i 's:^\s*#\(\s*Include /etc/koha/apache-shared-disable.conf\)$:\1:' \
+ "/etc/apache2/sites-available/$instancename"
+ return 0
+ else
+ return 1
+ fi
+}
# Parse command line.
-[ "$#" = 1 ] || die "Usage: $0 instancename..."
+[ "$#" > 1 ] || die "Usage: $0 instancename..."
+restart_apache="no"
for name in "$@"
do
- sed -i 's:^\s*#\(\s*Include /etc/koha/apache-shared-disable.conf\)$:\1:' \
- "/etc/apache2/sites-available/$name"
+ if is_instance $name ; then
+ if disable_instance $name; then
+ restart_apache="yes"
+ else
+ warn "Instance $name already disabled."
+ fi
+ else
+ warn "Unknown instance $name."
+ fi
done
-/etc/init.d/apache2 restart
+if [ "$restart_apache" = "yes" ]; then
+ /etc/init.d/apache2 restart
+fi
+
+exit 0
+
--
1.7.9.5
More information about the Koha-patches
mailing list