Changeset 43250 in spip-zone


Ignore:
Timestamp:
Dec 30, 2010, 4:10:21 PM (10 years ago)
Author:
eric@…
Message:

Prise en compte dans le fichier archivelist.txt d'informations sur le dépôt au format :
# @info = valeur

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _outils_/smart_paquets/inc_empaqueteur.php

    r42836 r43250  
    1414// http://fr2.php.net/manual/fr/function.file-put-contents.php
    1515
    16 function empaqueteur_xml_archives($zips, $dir_paq, $dir_repo, $srcname)
     16function empaqueteur_xml_archives($depot, $zips, $dir_paq, $dir_repo, $srcname)
    1717{
    1818        $xml = '';
     
    4141        }
    4242        if ($xml) {
    43                 $all = "<archives>
     43                $xml_depot = empaqueteur_xml_depot($depot);
     44                $all = "$xml_depot
     45<archives>
    4446$xml
    4547</archives>";
     
    5658}
    5759
     60// Fonction de construction du bloc xml du depot
     61// Pour l'instant ce bloc n'implemente pas la nouvelle DTD
     62function empaqueteur_xml_depot($depot) {
     63        $xml = '';
     64        foreach ($depot as $_balise => $_valeur) {
     65                $xml .= "<$_balise>$_valeur</$_balise>\n";
     66        }
     67        if ($xml)
     68                $xml = "<depot>\n$xml\n</depot>";
     69
     70        return $xml;
     71}
     72
    5873function empaqueteur($url, $dir_repo, $dir_paq, $src, $dest, $xml, $nom_vcs, $mail_to, $mail_from)
    5974{
     
    6580        $dir_paq = rtrim($dir_paq ? $dir_paq : '.','/') .'/';
    6681       
    67         $zips = empaqueteur_zips($url, $dir_repo, $dir_paq, $src, $nom_vcs);
     82        list($depot, $zips) = empaqueteur_zips($url, $dir_repo, $dir_paq, $src, $nom_vcs);
    6883        if (!$erreurs) {
    6984                // ne pas nettoyer le fichier archives.xml !
     
    7792                if (!function_exists($dest = 'empaqueteur_xml_' . $nom_dest)) {
    7893                        echo_trace("Producteur xml inconnu: '$nom_dest'");
    79                 } else $dest($zips, $dir_paq, $dir_repo, $xml);
     94                } else $dest($depot, $zips, $dir_paq, $dir_repo, $xml);
    8095        }
    8196}
     
    93108
    94109        // Creation des repertoires de travail et import initial
    95 
    96110        if (!file_exists($dir_repo)){
    97111                preparer_chemin(dirname(rtrim($dir_repo,'/')));
     
    103117                preparer_chemin($dir_tmp);
    104118
    105         // si le repo est en file:// on fait un svnsync dessus,
     119        // Si le repo est en file:// on fait un svnsync dessus,
    106120        // le up est fait par un hook post-commit sur ce qui a change uniquement
    107121        // sauf une fois par jour
     
    115129        }
    116130
    117         foreach(liste_paquets($dir_repo . $src) as $paquet){
     131        list($depot, $paquets) = liste_paquets($dir_repo . $src);
     132        foreach($paquets as $paquet){
    118133                if ($paquet['revision']=='HEAD') {
    119134                        $source = rtrim($paquet['source'],'/');
     
    131146                                // copier le svn.revision de stable/spip.zip qui permet de connaitre la derniere version stable
    132147                                if ($zip=="stable/spip.zip") {
    133                         // necessaire de remettre le fichier a la date actuelle
    134                         // car il a la date du dernier commit sur ce paquet
    135                         # touch($dsource."/svn.revision");
     148                                        // necessaire de remettre le fichier a la date actuelle
     149                                        // car il a la date du dernier commit sur ce paquet
     150                                        # touch($dsource."/svn.revision");
    136151                                        copie_update($rev,$dir_paq.dirname($zip)."/svn.revision");
    137152                                }
    138                         // supprimer le fichier info revision cree ci-dessus
     153                                // supprimer le fichier info revision cree ci-dessus
    139154                                @unlink($rev);
    140155                                $zips[$zip] = array(
     
    148163        }
    149164        echo_trace(count($zips) . " trouves");
    150         return $zips;
     165        return array($depot, $zips);
    151166}
    152167       
     
    364379        }
    365380
     381        $depot = array();
    366382        $paquets = array();
    367383        foreach($archivefile as $ligne=>$lignepaquet){
    368384                $lignepaquet=rtrim($lignepaquet);//on vire le retour ligne de la fin
    369                 if (substr($lignepaquet,0,1)!="#" AND strlen($lignepaquet)){
    370                         //on separe les parametres
    371                         // et on fixe ceux manquants
    372                         $a = explode(";",$lignepaquet);
    373                         $b = preg_split("/:/",$a[0]);
    374                         $source = $b[0];
    375                         $svn_version = empty($b[1]) ?'HEAD' : $b[1];           
    376                         $nom_paquet = empty($a[1]) ? basename($source) : $a[1];
    377                         $nom_dossier = empty($a[2]) ? $nom_paquet : $a[2];
    378 
    379                         $paquets[] = array('source'=>$source,'nom'=>$nom_paquet,'nom_dossier'=>$nom_dossier,'revision'=>$svn_version);
    380                 }
    381         }
    382 
     385                if (strlen($lignepaquet)) {
     386                        if (substr($lignepaquet,0,1)!="#") {
     387                                // C'est une ligne de fefinition d'un paquet :
     388                                // - on separe les parametres
     389                                // - et on fixe ceux manquants
     390                                $a = explode(";",$lignepaquet);
     391                                $b = preg_split("/:/",$a[0]);
     392                                $source = $b[0];
     393                                $svn_version = empty($b[1]) ?'HEAD' : $b[1];           
     394                                $nom_paquet = empty($a[1]) ? basename($source) : $a[1];
     395                                $nom_dossier = empty($a[2]) ? $nom_paquet : $a[2];
     396                                // Ajout au tableau des paquets a construire
     397                                $paquets[] = array('source'=>$source,'nom'=>$nom_paquet,'nom_dossier'=>$nom_dossier,'revision'=>$svn_version);
     398                        }
     399                        else if (preg_match('#@([^=\s]+)\s*=(.+)$#', substr($lignepaquet, 1), $matches)){
     400                                // C'est une ligne d'information sur le depot
     401                                // - on stocke le parametre trouve
     402                                $depot[trim($matches[1])] = trim($matches[2]);
     403                        }
     404                }
     405        }
     406
     407        echo_trace(count($depot)." informations de depot definies");
    383408        echo_trace(count($paquets)." paquets definis");
    384         return $paquets;
     409        return array($depot, $paquets);
    385410}
    386411
Note: See TracChangeset for help on using the changeset viewer.