Ausgangssituation

Ein Pluginentwickler hat mehrere Plugins für WordPress im Repository. Natürlich diese auch auf der lokalen Platte, denn dort werden diese bearbeitet und aktualisiert. Möchte der Entwickler diese nun auf einem zweiten Rechner – einem Laptop für unterwegs – ebenfalls zur Verfügung haben, so müsste er diese alle einzeln importieren. Bei ein bis zwei Plugins mag das noch gehen, aber wenn es einige mehr sind, viel Schreibarbeit.

1
2
mkdir pluginname
svn co http://plugins.svn.wordpress.org/pluginname pluginname/

Das sind also pro Plugin zwei Zeilen. Rechnet selbst nach, wie das bei 10, 20, oder mehr Plugins aussieht. Sehr mühsam.

Die Lösung …

… wäre da ein kleiner Helfer, der dies für einen erledigt. Also ein kleines Bash-Script.
Zunächst wird ein Array gebraucht, welches alle Pfade der Plugins beinhaltet. Dies könnte dann so aussehen:

1
2
3
4
5
plugins=(
    'plugin-1'
    'plugin-2'
    'plugin-3'
);

Dies ist der einzige Teil des Scriptes, welcher nach Möglichkeit aktuell gehalten werden sollte. Will damit sagen, wenn ein neues Plugin hinzukommt, sollte dies auch in diesem Array vermerkt werden. Die Syntax ist erkennbar einfach.

Im nächsten Schritt wird genau dieses Array durchlaufen.

1
2
3
4
for item in "${plugins[@]}";
do
    # the magic happens here
done

Damit wird erreicht, dass jedes im Array verzeichnete Plugin die nötige Aufmerksamkeit bekommt.
Aber wie sieht diese nun aus?
Ganz einfach. Es wird getestet, ob es bereits ein Verzeichnis für dieses Plugin gibt. Wenn nicht, so wird dies erstellt, und initialisiert. Soll heißen, das SVN-Repo für das Plugin wird in diesem Verzeichnis gespiegelt. Existiert das Verzeichnis bereits, so kann davon ausgegangen werden, dass dieser Schritt bereits in der Vergangenheit erledigt wurde. Also wird die lokale Kopie des SVN nur aktualisiert.

1
2
3
4
5
6
7
8
9
if [ ! -d "${item}" ];
then
    echo 'Erstelle Verzeichnis fuer:' ${item};
    mkdir ${item};
    svn co http://plugins.svn.wordpress.org/${item} ${item}/;
else
    echo 'Aktualisiere:' ${item};
    svn up ${item};
fi

Das war eigentlich schon alles. Keine große Zauberei, aber ein unverzichtbarer Helfer.
Hier nun das gesamte Bash-Script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash

##
# Getting or updating WordPress Plugins from SVN Repository.
#
# plugins is an array with the pathnames of your plugins
##
plugins=(
    'plugin-1'
    'plugin-2'
    'plugin-3'
);

for item in "${plugins[@]}";
do
    echo 'Verarbeite:' ${item};

    if [ ! -d "${item}" ];
    then
        echo 'Erstelle Verzeichnis fuer:' ${item};
        mkdir ${item};
        svn co http://plugins.svn.wordpress.org/${item} ${item}/;
    else
        echo 'Aktualisiere:' ${item};
        svn up ${item};
    fi

    echo 'Fertig mit:' ${item};
    echo '';
    echo '';
done

Gestartet wird das in einem ausgewählten Verzeichnis dann ganz einfach mittels:

1
./get-wp-plugins.sh

Abgesang

Wie schon eingangs erwähnt, setzt diese Lösung voll und ganz auf Linux. Wer nun Lust verspürt, dies auch für Windows zu portieren, darf dies natürlich gerne tun. Ich würde mich über eine Veröffentlichung hier in dem Kommentaren oder in Deinem Blog mit einem entsprechenden Verweis auf diesen Artikel freuen.

Also, Viel Spaß :-)

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>