Petite astuce Déployer un plugin de Git vers WordPress.org

Vous développez un plugin sur GitHub, et vous êtes maintenant prêt à le déployer sur WordPress.org… ah, oh, le développement du plugin WordPress.org se fait via SVN. Maintenant quoi? Ne vous inquiétez pas, il y a un script pour ça.

Récemment, j'ai développé un plugin pour WordPress que je voulais publier sur le répertoire de plugins WordPress.org. Je préfère utiliser Git comme logiciel de contrôle de version (j’utilisais auparavant SVN), mais le répertoire du plugin utilise SVN. Heureusement, il y a un joli script disponible sur GitHub appelé "Script de déploiement de répertoire de WordPress Plugin to WordPress" pour me permettre de développer avec Git, puis de le déployer directement dans le référentiel SVN sur WordPress.org lorsque je suis prêt à publier la dernière version..

Cette version du script provient de Ben Balter, qui a été créée à partir d'un script similaire de Brent Shepherd, qui a été créée à partir d'un script de Dean Clatworthy. Chacune d'entre elles a apporté diverses améliorations à la précédente et j'ai trouvé le résultat final très utile..

J'ai créé ma propre fork de ce script que j'utilise, donc mon nom d'utilisateur SVN.


Le scénario

 #! / bin / bash # # Script à déployer de Github à WordPress.org Référentiel de plugins # Une modification du script de déploiement de Dean Clatworthy, disponible ici: https://github.com/deanc/wordpress-plugin-git-svn # La différence est que ce script réside dans le dépôt git du plugin et ne nécessite pas de dépôt SVN existant. # Source: https://github.com/thenbrent/multisite-user-management/blob/master/deploy.sh #prompt for slin plugin echo -e "Plugin Slug: \ c", lisez la configuration principale de PLUGINSLUG #, à partir de plugin slug CURRENTDIR = "pwd" CURRENTDIR = "$ CURRENTDIR / $ PLUGINSLUG" MAINFILE = "$ PLUGINSLUG.php" # ceci devrait être le nom de votre fichier php principal dans le plugin wordpress # git config GITPAT = "$ CURRENTDIR /" ce fichier doit se trouver dans la base de votre référentiel git # svn config SVNPATH = "/ tmp / $ PLUGINSLUG" # chemin vers un référentiel temporaire SVN. Aucune barre oblique finale requise et n'ajoutez pas de coffre. SVNURL = "http://plugins.svn.wordpress.org/$PLUGINSLUG/" # Repo SVN distant sur WordPress.org, sans barre oblique SVNUSER = "benbalter" # votre nom d'utilisateur svn # Commençons… echo "…" echo echo "Préparation au déploiement du plug-in WordPress" echo echo "…" echo # La version de vérification dans le fichier readme.txt est identique au fichier de plug-in NEWVERSION1 = "grep" ^ Balise stable "$ GITPATH ​​/ readme.txt | awk -F" print $ 3  "echo" version readme: $ NEWVERSION1 "NEWVERSION2 =" grep "^ Version" $ GITPATH ​​/ $ MAINFILE | awk -F "print $ 2" echo "$ version MAINFILE: $ NEWVERSION2" si ["$ NEWVERSION1"! = "$ NEWVERSION2"]; then echo "Les versions ne correspondent pas. Quitter ..."; sortie 1; fi echo "Les versions correspondent dans les fichiers readme.txt et PHP. Allons-y ..." cd $ GITPATH ​​echo -e "Entrez un message de validation pour cette nouvelle version: \ c" read COMMITMSG git commit -am "$ COMMITMSG" echo "Nouveau marquage version in git "balise git -a" $ NEWVERSION1 "-m" balisage de la version $ NEWVERSION1 "echo" Ajout du dernier commit à l'origine, avec balises "git push origin master git push origin master - balises echo echo" Création d'une copie locale de SVN repo… "svn co $ SVNURL $ SVNPATH echo" "Ignorer les fichiers spécifiques à github et le script de déploiement" "svn propset svn: ignorer" deploy.sh README.md .git .gitignore "" $ SVNPATH / trunk / "#export git -> SVN echo "Exportation de l'en-tête HEAD du maître de git vers le tronc de SVN", existe sous-module git checkout-index -a -f --prefix = $ SVNPATH / trunk / #if, vérifiez récursivement leurs index si [-f ".gitmodules"] then echo "Exportation de l'en-tête HEAD de chaque sous-module de git vers le tronc de SVN" mise à jour du sous-module git init Sous-module git Mise à jour du sous-module git poureach --recursive 'git checkout-index -a -f --prefix = $ SVNPA TH / trunk / $ path / 'fi echo "Changer de répertoire en SVN et valider trunk" cd $ SVNPATH / trunk / # Ajouter tous les nouveaux fichiers qui ne sont pas configurés pour être ignorés svn status | grep -v "^. [\ t] * \… *" | grep "^?" | awk 'print $ 2' | xargs svn add svn commit --username = $ SVNUSER -m "$ COMMITMSG" echo "Création du nouveau tag SVN et validation" cd $ SVNPATH copie de la ligne / tags / $ NEWVERSION1 / cd $ SVNPATH / tags / $ NEWVERSION1 svn commit - -username = $ SVNUSER -m "Version de balisage $ NEWVERSION1" echo "Suppression du répertoire temporaire $ SVNPATH" rm -fr $ SVNPATH / echo "*** FIN ***"

Usage

J'utilise ce script en le laissant assis dans mon / wp-content / plugins / annuaire. Puis, quand je suis prêt à installer un de mes plugins, depuis le Terminal, je lance ./deploy.sh. Le script me demande ensuite le slug de mon plugin, que je fournis. Il vérifie que la version du plugin correspond à la version "Stable" de mon plugin readme.txt, et puis va à propos de ses affaires faisant le déploiement.


Que fait-il réellement?

En substance, le script effectue les étapes suivantes:

  1. Crée un étiquette pour la version publiée dans votre référentiel Git
  2. Crée une extraction SVN temporaire du référentiel de votre plugin à partir de WordPress.org
  3. Exporte le contenu de votre référentiel Git dans le référentiel SVN
  4. Valide ces modifications dans le référentiel SVN
  5. Crée une balise dans le référentiel SVN et la valide
  6. Supprime la caisse temporaire SVN de votre machine de développement

C'est tout! Eh bien, il y a quelques autres choses là-dedans telles que la vérification récursive afin de prendre en charge les sous-modules, etc. aussi, mais c'est le noeud du problème.

Prendre plaisir!