From 3845e3e0f39f11bab079f196338569900604ba46 Mon Sep 17 00:00:00 2001
From: Reed Wade <reed@typist.geek.nz>
Date: Thu, 26 Jun 2014 02:24:07 -0400
Subject: [PATCH] Bug 8566: Enable koha-foreach to insert the instancename into
 commands

koha-foreach has been modified to replace __instancename__ with $name
on each iteration using sed.

The docbook file for koha-foreach has also been updated to reflect the
new functionality.

To test:

    koha-foreach ls -ld /etc/koha/sites/__instancename__

should list directories instead of giving an error message.

Signed-off-by: Magnus Enger <digitalutvikling@gmail.com>
The suggested example with ls works as expected, as does my
more complex example with fines.pl:

koha-foreach --enabled /usr/share/koha/bin/cronjobs/fines.pl \
--out /var/log/koha/__instancename__/

The man page looks good too.
---
 debian/docs/koha-foreach.xml | 1 +
 debian/scripts/koha-foreach  | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/debian/docs/koha-foreach.xml b/debian/docs/koha-foreach.xml
index c8a612c..4e84463 100644
--- a/debian/docs/koha-foreach.xml
+++ b/debian/docs/koha-foreach.xml
@@ -29,6 +29,7 @@
 
   <refsect1><title>Description</title>
   <para>Run a command for each Koha instance. Takes the same arguments as koha-list.</para>
+  <para>The string "__instancename__" is replaced in the argument list with the name of the Koha instance in each iteration.</para>
   </refsect1>
   
   <refsect1><title>See also</title>
diff --git a/debian/scripts/koha-foreach b/debian/scripts/koha-foreach
index 6bda414..6e4d98d 100755
--- a/debian/scripts/koha-foreach
+++ b/debian/scripts/koha-foreach
@@ -32,12 +32,13 @@ done
             
 for name in $(koha-list $listopts)
 do
+    cmd=`echo "$@" | sed -e s/__instancename__/${name}/g`
     (
     exec 3>&1
     sudo -u "$name-koha" \
     env PERL5LIB=/usr/share/koha/lib \
         KOHA_CONF="/etc/koha/sites/$name/koha-conf.xml" \
-        "$@" 2>&1 >&3 | sed -e "s/^/$name: /" >&2 3>&-
+        ${cmd} 2>&1 >&3 | sed -e "s/^/$name: /" >&2 3>&-
     exec 3>&-
     ) | sed -e "s/^/$name: /"
 
-- 
1.9.1