sfPackageMaker2Plugin

5
Your rating: Aucun Average: 5 (1 vote)

Lorsque l'on développe un plugin pour symfony, le tgz doit être formaté selon la norme des packages PEAR. Ce plugin est une évolution de sfPackageMakerPlugin compatible pour symfony 1.2

Ce plugin permet donc de créer un task symfony qui générera un XML de description valide à partir d'un XML template pour créér le package.

Dans cette version du plugin le task permet égallement de générer les changelog pour respecter le mode Strict de la norme, et donc vous simplifier l'upload de votre packge sur http://symfony-project.com.

Bien évidement, ce plugins, peux servir à générer tous type de packages PEAR, pas uniquement pour symfony.

version du plugin: 
0.2.2
Stabilité: 
beta
Version de symfony: 
developpeurs: 

Comment installer sfPackageMaker2Plugin ?

 Pour installer le package il vous suffit d'éxecuter la commande :

symfony plugin:install sfPackageMaker2Plugin --release=0.2.2

Videz ensuite votre cache :

symfony cc

 

Créér le package.xml

Afin de créér le fichier PEAR package.xml, vous devez :

  1. Copier le fichier package-skelton.xml du dossier plugins/sfPackageMaker2Plugin
  2. Le coller à la racine de votre dossier plugins (sf_plugins_dir par défaut plugins)
  3. Le renommer selon le modele suivant package-NOM_DE_VOTR_PLUGIN.xml
  4. Editer ensuite le fichier package-NOM_DE_VOTR_PLUGIN.xml

Modifier le bloc <lead> avec le modele suivant

<lead>
  <name>VOTRE NOM</name>
  <user>VOTRE IDENTIFIANT SYMFONY</user>
  <email>VOTRE EMAIL</email>
  <active>yes</active>
 </lead>

 Vous pouvez bien sur ajouter les blocs pour tous les auteurs.

  1. Remplissez ensuite le bloc <summary> avec la description rapide de votre plugin
  2. Remplissez ensuite le bloc <description> avec la description longue de votre plugin
  3. Enfin complétez le bloc <dependencies> avec la liste de vos dépendances

Exemple :

 <dependencies>
  <required>
   <php>
    <min>5.1.0</min>
   </php>
   <pearinstaller>
    <min>1.4.1</min>
   </pearinstaller>
   <package>
    <name>symfony</name>
    <channel>pear.symfony-project.com</channel>
    <min>1.1.0</min>
    <max>1.3.0</max>
    <exclude>1.3.0</exclude>
   </package>
  </required>
 </dependencies>

 

 Les dépendances de symfony détermine avec quel version de symfony le package est installable, pensez à bien ajuster cette section, sinon vos plugins ne pourront pas installés facilement

ATTENTION :

Le mode strict de symfony requiert les fichiers README et LICENSE, si vous ne les avez pas créés, le task le fera pour vous.

 

Le task et ses options

La ligne de commande

Afin de créer un fichier, vous pouvez executer la commande :

./symfony plugin:build-package

Sous windows :

symfony plugin:build-package

(je rappele que l'appel au php-cli est optionnel, vous n'avez donc pas l'obligation de mettre php symfony ...)

Le task dispose également d'un alias pour ceux qui ne se sont pas encore fait à la structure des namespaces :

symfony plugin-build-package

Paramètre obligatoire

Cette ligne de commande contient un argument obligatoire, vous l'aviez probablement deviné, c'est le nom du plugin.

Par défaut et je vous conseille de respecter cette structure, ca simplifie la vie, c'est le nom du plugin dans le fichier package-NOM_DU_PLUGIN.xml

Options complémentaires

Recommandations d'usage

Afin de vous simplifier la vie, voila la ligne de commande que je vous conseil :

./symfony plugin:build-package -v"X.Y.Z" -s"beta" -c"Your notes for the version" PLUGIN_NAME

Si vous avez créer votre ficher XML avec le bon numéro de version, et que vous aviez oublié un fichier par exemple (mais sans rien avoir mis sur le repository), ou encore que vous n'avez pas directement générer le tgz, vous pouvez executer

./symfony plugin:build-package PLUGIN_NAME

 

Créer un fichier tgz

Une fois que vous avez préparer le fichier xml il ne vous reste plus qu'a créer un fichier tgz pour l'uploader sur http://symfony-project.com

Procédez comme suit :

cd plugins
pear package NOM_DE_VOTRE_PLUGIN/package.xml

Vous trouverez le fichier tgz dans le dossier plugin.