Bug 10782 - Add a koha-mysqlcheck script
authorMagnus Enger <magnus@enger.priv.no>
Mon, 14 Oct 2013 19:10:31 +0000 (21:10 +0200)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 23 Apr 2014 12:30:06 +0000 (12:30 +0000)
This patch adds the koha-mysqlcheck script, as a "frontend" for
the mysqlcheck command. It can be used to check the integrity of
database tables, as well as to repair them. See "man mysqlcheck"
for more information.

The script takes a Koha instance name as its only required
parameter. Any other parameters provided before the instance
name are passed directly to mysqlcheck, which means that all
the functionality of mysqlcheck is available through this script.

To test the script:
- Apply the patch, build your own packages and install them, or
- copy koha-mysqlcheck to a server already running off packages

- Run some variations of the command, with and without arguments,
  and check that the output makes sense. E.g.:
    sudo koha-mysqlcheck myinstance
    sudo koha-mysqlcheck -e myinstance # Extended checks
    sudo koha-mysqlcheck -e -v myinstance # Extended checks and verbose
- See "man mysqlcheck" for other relevant options

To test the man page:
- Run these commands and look at the formatted man page:
    $ xsltproc /usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl \
      debian/docs/koha-mysqlcheck.xml
    $ man -l koha-mysqlcheck.8
- Make sure this test passes:
    $ prove -v xt/verify-debian-docbook.t

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
debian/docs/koha-mysqlcheck.xml [new file with mode: 0644]
debian/scripts/koha-mysqlcheck [new file with mode: 0755]

diff --git a/debian/docs/koha-mysqlcheck.xml b/debian/docs/koha-mysqlcheck.xml
new file mode 100644 (file)
index 0000000..88b01d7
--- /dev/null
@@ -0,0 +1,44 @@
+<article xmlns='http://docbook.org/ns/docbook'>
+<title>koha-mysqlcheck</title>
+<info>
+<productname>Koha</productname> is the first free software library automation package.
+<author>
+  <orgname>The Koha Community</orgname>
+  <uri>http://koha-community.org/</uri>
+</author>
+</info>
+
+<refentry xml:id="koha-mysqlcheck">
+
+  <refmeta>
+    <refentrytitle>koha-mysqlcheck</refentrytitle>
+    <manvolnum>8</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>koha-mysqlcheck</refname>
+    <refpurpose>Run <command>mysqlcheck</command> on the database of the specified Koha instance.</refpurpose>
+    <refclass>UNIX/Linux</refclass>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>koha-mysqlcheck</command> <arg><option>...</option></arg> <arg choice="req" rep="norepeat"><replaceable>instancename</replaceable></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+  <refsect1><title>Description</title>
+  <para>Run <command>mysqlcheck</command> on the database of the specified Koha instance.</para>
+  <para>Any arguments provided before the name of the instance are passed directly to <command>mysqlcheck</command>. This means that all the operations of <command>mysqlcheck</command> are available through this script.</para>
+  </refsect1>
+
+  <refsect1><title>See also</title>
+  <simplelist type="inline">
+    <member><command>mysqlcheck(1)</command></member>
+    <member><command>koha-mysql(8)</command></member>
+  </simplelist>
+  </refsect1>
+
+</refentry>
+
+</article>
diff --git a/debian/scripts/koha-mysqlcheck b/debian/scripts/koha-mysqlcheck
new file mode 100755 (executable)
index 0000000..5a5286b
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/bash
+#
+# koha-mysqlcheck: run mysqlcheck on the database of the specified Koha instance.
+# Copyright 2013 Magnus Enger Librioech
+# Based on koha-mysql, which is Copyright 2011  Catalyst IT, Ltd
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+set -e
+
+umask 0077
+
+die() {
+    echo "$@" 1>&2
+    exit 1
+}
+
+# Parse command line.
+if [ $# -lt 1 ]; then
+    die "Usage: $0 [options] instancename"
+fi
+
+# Separate any arguments from the instance name
+array=($@)
+len=${#array[@]}
+name=${array[$len-1]}
+args=${array[@]:0:$len-1}
+
+kohaconfig="/etc/koha/sites/$name/koha-conf.xml"
+
+mysqlhost="$( xmlstarlet sel -t -v 'yazgfs/config/hostname' $kohaconfig )"
+mysqldb="$(   xmlstarlet sel -t -v 'yazgfs/config/database' $kohaconfig )"
+mysqluser="$( xmlstarlet sel -t -v 'yazgfs/config/user'     $kohaconfig )"
+mysqlpass="$( xmlstarlet sel -t -v 'yazgfs/config/pass'     $kohaconfig )"
+
+mysqlcheck --host="$mysqlhost" --user="$mysqluser" --password="$mysqlpass" \
+    $args "$mysqldb"