Browse Source

Version fonctionnelle générant les zips à partir des paquet.xml.

Les crons sont configurés pour aller chercher le paquet.xml en priorité sinon le plugin.xml
master
eric@smellup.net 10 years ago
parent
commit
770aeb775e
  1. 2
      cron-paquets-00.sh
  2. 2
      cron-paquets-30.sh
  3. 4
      cron-paquets.sh
  4. 5
      empaqueteur.php
  5. 51
      empaqueteur_paquet.php
  6. 7
      empaqueteur_plugin.php
  7. 22
      inc_empaqueteur.php

2
cron-paquets-00.sh

@ -1,4 +1,4 @@
#!/bin/sh
cd /home/smart_paquets
export LC_ALL=fr_FR@euro
/usr/bin/php empaqueteur.php file:///home/svn/repository/spip-zone/ spip-zone paquets archivelist.txt archives plugin.xml svn spip-zone@rezo.net paquets-zone@rezo.net
/usr/bin/php empaqueteur.php file:///home/svn/repository/spip-zone/ spip-zone paquets archivelist.txt archives paquet svn spip-zone@rezo.net paquets-zone@rezo.net

2
cron-paquets-30.sh

@ -1,4 +1,4 @@
#!/bin/sh
cd /home/smart_paquets
export LC_ALL=fr_FR@euro
/usr/bin/php empaqueteur.php svn://trac.rezo.net/spip spip paquets archivelist.txt archives plugin.xml svn spip-dev@rezo.net paquets-spip@rezo.net
/usr/bin/php empaqueteur.php svn://trac.rezo.net/spip spip paquets archivelist.txt archives paquet svn spip-dev@rezo.net paquets-spip@rezo.net

4
cron-paquets.sh

@ -1,5 +1,5 @@
#!/bin/sh
cd /home/smart_paquets
export LC_ALL=fr_FR@euro
/usr/bin/php empaqueteur.php svn://zone.spip.org/spip-zone spip-zone paquets archivelist.txt archives plugin.xml svn spip-zone@rezo.net paquets-zone@rezo.net
/usr/bin/php empaqueteur.php svn://trac.rezo.net/spip spip paquets archivelist.txt archives plugin.xml svn spip-dev@rezo.net paquets-spip@rezo.net
/usr/bin/php empaqueteur.php svn://zone.spip.org/spip-zone spip-zone paquets archivelist.txt archives paquet svn spip-zone@rezo.net paquets-zone@rezo.net
/usr/bin/php empaqueteur.php svn://trac.rezo.net/spip spip paquets archivelist.txt archives plugin svn spip-dev@rezo.net paquets-spip@rezo.net

5
empaqueteur.php

@ -18,12 +18,15 @@ if (!isset($argv[1]) OR !$argv[1]){
// --------------------------------------- CONFIGURATION -------------------------------------------
date_default_timezone_set('Europe/Paris');
define('_TRACE',true);
define('_SLEEP_BETWEEN',200000);
// on force une mise a jour de tous les paquets une fois pas jour,
// entre minuit et 1H
define('_FORCE_UPDATE',date('H')<1);
#error_reporting(E_ALL);
// Pour inclure les fichiers de langue
define('_ECRIRE_INC_VERSION', 1);
include('inc_empaqueteur.php');

51
empaqueteur_paquet.php

@ -1,67 +1,48 @@
<?php
// Renvoie le contenu du fichier paquet.xml auquel on a ajoute les balises multi :
// - du nom (si celui-ci est traduit)
// - du slogan et de la description
function empaqueteur_paquet_xml($descr, $multis=array()) {
if ($multis[0]) {
// Le nom est pas traduit, il faut donc supprimer la balise nom si elle existe
preg_replace('#<nom[^>]*>\s*(.+)\s*</nom>#i', '', $descr);
}
// On rajoute systematiquement les balises nom, slogan et description à la fin de la
// balise paquet
$balises = ($multis[0] ? '<nom>' . $multis[0] . "</nom>\n" : '') .
($multis[1] ? '<slogan>' . $multis[1] . "</slogan>\n" : '') .
($multis[2] ? '<description>' . $multis[2] . "</description>\n" : '');
preg_replace('#</paquet>#i', $balises . "\n</paquet>", $descr);
return $descr;
}
// Construit le contenu multi des balises nom, slogan et description a partir des items de langue
// contenus dans les fichiers paquet-prefixe_langue.php
function empaqueteur_paquet_multi($dir_source) {
$nom = $slogan = $description = '';
$multis = '';
if ($fichier_fr = glob($dir_source . '/lang/paquet-*_fr.php')) {
// Determination du nom du module, du prefixe et des items de langue
$nom_fr = basename($fichier_fr[0], '.php');
$prefixe = substr($nom_fr, 7, strlen($nom_fr)-3-7);
$module = "paquet-$prefixe";
$item_nom == $prefixe . "_nom";
$item_slogan == $prefixe . "_slogan";
$item_description == $prefixe . "_description";
$item_nom = $prefixe . "_nom";
$item_slogan = $prefixe . "_slogan";
$item_description = $prefixe . "_description";
// On cherche tous les fichiers de langue destines a la traduction du paquet.xml
if ($fichiers_langue = glob($source . "/lang/paquet-$module_*.php")) {
if ($fichiers_langue = glob($dir_source . "/lang/{$module}_*.php")) {
$nom = $slogan = $description = '';
foreach ($fichiers_langue as $_fichier_langue) {
$nom_fichier = basename($_fichier_langue, '.php');
$langue = substr($nom_fichier, strlen($module) + 1 - strlen($nom_fichier));
// Si la langue est reconnue, on traite la liste des items de langue
if (isset($GLOBALS['codes_langues'][$langue])) {
include($_fichier_langue);
$var_source = "i18n_".$module."_".$langue;
foreach ($GLOBALS[$var_source] as $_item => $_traduction) {
$GLOBALS['idx_lang'] = $langue;
include($_fichier_langue);
foreach ($GLOBALS[$langue] as $_item => $_traduction) {
if ($_item == $item_nom)
$nom .= "\n\t[$langue]$traduction";
$nom .= "\n[$langue]$_traduction";
if ($_item == $item_slogan)
$slogan .= "\n\t[$langue]$traduction";
$slogan .= "\n[$langue]$_traduction";
if ($_item == $item_description)
$description .= "\n\t[$langue]$traduction";
$description .= "\n[$langue]$_traduction";
}
}
}
// Finaliser la construction des balises multi
if ($nom) $nom = "<multi>$nom\n</multi>";
if ($slogan) $slogan = "<multi>$slogan\n</multi>";
if ($description) $description = "<multi>$description\n</multi>";
if ($nom) $multis .= "<nom>\n<multi>$nom\n</multi>\n</nom>\n";
if ($slogan) $multis .= "<slogan>\n<multi>$slogan\n</multi>\n</slogan>\n";
if ($description) $multis .= "<description>\n<multi>$description\n</multi>\n</description>\n";
}
}
return array($nom, $slogan, $description);
return ($multis ? "<multis>\n$multis</multis>" : '');
}

7
empaqueteur_plugin.php

@ -1,12 +1,5 @@
<?php
// Renvoie le contenu du fichier plugin.xml tel que.
// Pour cette DTD, le tableau $multis est vide
function empaqueteur_plugin_xml($descr, $multis=array()) {
return $descr;
}
// Renvoie le path complet du logo a partir de la balise icon de plugin.xml et de la racine des sources
function empaqueteur_plugin_logo($plugin_xml, $dir_source) {
return !preg_match('#<icon[^>]*>\s*(.+)\s*</icon>#i', $plugin_xml, $matches) ? '' : ($dir_source . '/' . trim($matches[1]));

22
inc_empaqueteur.php

@ -261,7 +261,7 @@ function creer_paquet($paquet, $dir_repo, $dir_paq, $dir_tmp, $vcs, $dtd_prio) {
$autre_dtd = ($dtd_prio == 'plugin') ? 'paquet' : 'plugin';
$f = $dsource . '/' . $autre_dtd . '.xml';
if (file_exists($f))
$dtd = autre_dtd;
$dtd = $autre_dtd;
else {
// Paquet sans xml correspondant a une contribution quelconque
echo_trace("(info) Paquet $zip sans fichier XML");
@ -271,7 +271,7 @@ function creer_paquet($paquet, $dir_repo, $dir_paq, $dir_tmp, $vcs, $dtd_prio) {
$traductions = '';
$logo = '';
$multis = array();
$multis = '';
if ($dtd) {
// Recuperer le xml qui decrit le plugin et suppression de l'entete XML si elle existe
$re = ",<"."\?xml[^>]*\?".">,Uims";
@ -381,7 +381,7 @@ function compiler_traductions($source){
foreach ($rapports as $_rapport) {
$modules_salvatore[] = basename($_rapport, '.xml');
$contenu = file_get_contents($_rapport);
$traductions .= $contenu . "\n";
$traductions .= $contenu;
}
}
@ -405,12 +405,12 @@ function compiler_traductions($source){
// Si la langue est reconnue, on l'ajoute a la liste des traductions
// Comme on ne connait pas les traducteurs, la balise est donc vide
if (isset($GLOBALS['codes_langues'][$langue]) AND $langue != 'fr')
$liste_langues .= "\t\t" . '<langue code="' . $langue . '" />' . "\n";
$liste_langues .= "\t" . '<langue code="' . $langue . '" />' . "\n";
}
// Le gestionnaire n'est pas precise et la langue de reference est toujours le fr
$traductions .= '\t<traduction module="' . $module . '" reference="fr">' . "\n" .
$traductions .= '<traduction module="' . $module . '" reference="fr">' . "\n" .
$liste_langues .
'\t</traduction>' . "\n";
'</traduction>' . "\n";
}
}
}
@ -445,9 +445,10 @@ function empaqueteur_resultats($depot, $zips) {
<source>$source</source>
<last_commit>$commit</last_commit>
</zip>
$traductions" .
$f($descr_xml, $multis) .
"</archive>\n\n";
$traductions
$descr_xml
$multis
\n</archive>\n\n";
// Bloc d'info pour Salvatore si il existe
if (preg_match_all("#<salvatore\s+module=['\"](\w*)['\"]\s+reference=['\"](\w*)['\"]\s*/>#i", $descr_xml, $matches)) {
foreach ($matches[1] as $_i => $_module) {
@ -467,7 +468,8 @@ $f($descr_xml, $multis) .
}
if ($xml_depot)
$xml_depot = "<depot>\n$xml_depot</depot>\n";
$xml = "$xml_depot<archives>
$xml = "$xml_depot
<archives>
$xml
</archives>";

Loading…
Cancel
Save