WordPress automagisch upgraden (nu met nog slimmer hondje)

labrador puppyDe meeste nerds/ bloggers weten het ongetwijfeld al; wordpress.org bracht eergisteren versie 2.3 van de gelijknamige open source blogsoftware uit. Wat die nieuwe versie allemaal kan, hebben anderen al beschreven, ga gerust daar even lezen indien ge op zo’n dingen kickt. Via-via kwam ik echter op een pagina van wordpress zelf waarin werd beschreven hoe ge via subversion (ofte svn) bijna automatisch kon updaten. Omdat ik wel van een potje shell-scripten hou en omdat “bijna automatisch” net niet automatisch genoeg is, heb ik WPuppy.sh bij elkaar gekliederd.
Het beestje probeert samengevat het volgende te doen:

  • het haalt van de wordpress svn de pagina waar alle versies opgelijst staan en distilleert daaruit de laatste versie
  • het vergelijkt die versie met de versie die in een config-bestandje opgeslagen zit en vraagt of ge wilt upgraden
  • het upgrade via svn en opent de update.php van uw blog in lynx, zodat wordpress de laatste aanpassingen kan doen
  • het past de versie in het config-bestandje aan

WPuppy.sh hoort vanzelfsprekend in een linux-hok met shell-access en heeft naast bash oa ook lynx en svn nodig om te kunnen spelen. Bij testen heeft WPuppy.sh oa. succesvol een upgrade van WP 2.2 naar 2.3 op mijn Debian Etch machine gedaan, maar ik kan vanzelfsprekend geen garanties geven dat het jonge beest altijd en overal even zindelijk zal zijn 😉
Wie denkt iets met mijn nieuwe speelkameraadje te kunnen doen, moet:

  • WordPress een eerste keer manueel installeren met svn (zoals beschreven op de WP-pagina over svn)
  • WPuppy.sh afhalen in mijn kennel en in een mandje op zijn/ haar linux-gebaseerde server zetten
  • in dat bestand de waarde van variabelen blogdir en blogurl aanpassen
  • in hetzelfde directory een bestand aanmaken met de naam “wp-installedversion” en daarin de huidige versie opslaan in de juiste vorm (bv. “2.2”).

Als ge dat gedaan hebt, zout ge in principe elke upgrade moeten kunnen doen door WPuppy.sh er gewoon op los te laten. Kleine hondjes zijn leuk, toch?
Update: ik heb één en ander aangepast voor eigen gemak en zielerust en WPuppy.sh maakt nu eerst een backup van database en filesysteem en deactiveert daarna ook alle WP-plugins. Fouten allerhande zouden verder iets properder moeten worden opgevangen en gemeld. Maar van de weeromstuit heeft WPuppy.sh nu natuurlijk ook mysql, mysqldump, tar en gzip nodig om te kunnen blaffen. En dat het nu nog meer dan voordien spaghetti-code is, dat spreekt voor zich toch?