[Koha-patches] [PATCH] Bug 10101 - make koha-enable more robust

Tomas Cohen Arazi tomascohen at gmail.com
Tue Apr 23 17:09:03 CEST 2013


koha-enable now:

- checks for the existence of the instance before any other action on it.
- checks if the instance is already enabled before changing stuff in the config files.
- only reloads apache if it is needed!
- handles more than one instance name as parameter (the code was there, a check for the cardinality of the args prevented it from working).
- documents this behaviour change in the docs
- doesn't break if the provided (invalid) instance name is a prefix/suffix of a real one (added -x to the relevant grep command).

To test:
- Aplpy the patch, build your packages
- Run koha-enable on
  - Non existent instance (try using a prefix or a suffix of an already created one too).
  - Already enabled existent instance name.
  - Disabled instance.

Regards
To+

Sponsored-by: Universidad Nacional de Córdoba
---
 debian/docs/koha-enable.xml |    6 ++--
 debian/scripts/koha-enable  |   68 +++++++++++++++++++++++++++++++++++++++----
 2 files changed, 66 insertions(+), 8 deletions(-)

diff --git a/debian/docs/koha-enable.xml b/debian/docs/koha-enable.xml
index db45daa..87f29ba 100644
--- a/debian/docs/koha-enable.xml
+++ b/debian/docs/koha-enable.xml
@@ -17,18 +17,18 @@
 
   <refnamediv>
     <refname>koha-enable</refname>
-    <refpurpose>Enable a Koha instance. New instances are enabled by default. You only need this command if you have previously disabled a site with koha-disable.</refpurpose>
+    <refpurpose>Enable one or more Koha instances. New instances are enabled by default. You only need this command if you have previously disabled an instance with koha-disable.</refpurpose>
     <refclass>UNIX/Linux</refclass>
   </refnamediv>
 
   <refsynopsisdiv>
     <cmdsynopsis>
-      <command>koha-enable</command> <arg choice="req" rep="norepeat"><replaceable>instancename</replaceable></arg>
+      <command>koha-enable</command> <arg choice="req" rep="repeat"><replaceable>instancename</replaceable></arg>
     </cmdsynopsis>
   </refsynopsisdiv>
 
   <refsect1><title>Description</title>
-  <para>Enable a Koha instance. New instances are enabled by default. You only need this command if you have previously disabled a site with koha-disable.</para>
+  <para>Enable one or more Koha instances. New instances are enabled by default. You only need this command if you have previously disabled am instance with koha-disable.</para>
   </refsect1>
   
   <refsect1><title>See also</title>
diff --git a/debian/scripts/koha-enable b/debian/scripts/koha-enable
index 3ceef2e..01c2a85 100755
--- a/debian/scripts/koha-enable
+++ b/debian/scripts/koha-enable
@@ -20,20 +20,78 @@
 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
+}
+
+enable_instance()
+{
+    local instancename=$1
+
+    if ! is_enabled $instancename; then
+        sed -i '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*Include /etc/koha/apache-shared-disable.conf\)$:#\1:' \
-        "/etc/apache2/sites-available/$name"
+    if is_instance $name ; then
+        if enable_instance $name; then
+            restart_apache="yes"
+        else
+            warn "Instance $name already enabled."
+        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