Changeset 119847 in spip-zone


Ignore:
Timestamp:
Jan 20, 2020, 4:38:49 AM (8 months ago)
Author:
Cerdic
Message:

refactoring pousseur suite (wip)

Location:
_plugins_/trad-lang/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk

    • Property subgit:lock:4a05652af72139589e7bd4a682f84d84eea94e3e deleted
    • Property subgit:lock:5e108f1dcfff9a45562508d7a2ce02e7441f8cdb set to 2020-01-20T09:05:40.383
  • _plugins_/trad-lang/trunk/inc/salvatore.php

    r119841 r119847  
    8181                        define('_SALVATORE_SEUIL_EXPORT', 50);
    8282                }
     83
     84                if (!defined('_SALVATORE_AUTHOR_COMMITS')) {
     85                        define('_SALVATORE_AUTHOR_COMMITS', 'salvatore@rezo.net');
     86                }
     87
     88                if (!defined('_SALVATORE_SVN_PROPSET')) {
     89                        define('_SALVATORE_SVN_PROPSET', true);
     90                }
     91
    8392
    8493                if (!isset($GLOBALS['idx_lang'])){
  • _plugins_/trad-lang/trunk/inc/salvatore_pousseur.php

    r119843 r119847  
    2929// il commit et push les fichiers modifies
    3030
     31include_spip('inc/salvatore_git');
     32include_spip('inc/salvatore_svn');
    3133
    3234/**
     
    5052        salvatore_check_dir($dir_depots);
    5153
    52         $done = array();
     54        $url_gestionnaire = salvatore_get_self_url();
    5355
    5456        foreach ($liste_sources as $source){
     
    7678                                $message_commit = '';
    7779                                if (isset($commit_infos['.message'])) {
    78                                         $message_commit = $commit_infos['.message'];
     80                                        $message_commit = trim($commit_infos['.message']) . "\n";
    7981                                        unset($commit_infos['.message']);
    8082                                }
    81 
    82 
    83 
    84 
    85                         }
    86                 }
    87 
    88                 /*
    89                 $url_with_credentials = salvatore_set_credentials($source['methode'], $source['url'], $source['module']);
    90 
    91                 $dir_checkout = $dir_depots . $source['dir_checkout'];
    92                 $dir_module = $dir_modules . $source['dir_module'];
    93                 $dir_target = $dir_checkout;
    94                 if ($source['dir']) {
    95                         $dir_target .= "/" . $source['dir'];
    96                 }
    97 
    98                 $return = 0;
    99                 if (empty($done[$dir_checkout])) {
    100                         $cmd = "checkout.php"
    101                           . ' ' . $source['methode']
    102                                 . ($source['branche'] ? ' -b'.$source['branche'] : '')
    103                                 . ' ' . $url_with_credentials
    104                                 . ' ' . $dir_checkout;
    105 
    106                         echo "$cmd\n";
    107                         passthru("export FORCE_RM_AND_CHECKOUT_AGAIN_BAD_DEST=1 && $cmd 2>/dev/null", $return);
    108                         $done[$dir_checkout] = true;
    109                 }
    110 
    111                 if ($return !== 0 or !is_dir($dir_checkout) or !is_dir($dir_target)) {
    112                         $corps = $source['url'] . ' | ' . $source['module'] . "\n" . "Erreur lors du checkout";
    113                         salvatore_fail('[Tireur] : Erreur', $corps);
    114                 }
    115 
    116                 if (file_exists($dir_module) and !is_link($dir_module)) {
    117                         $corps = $source['url'] . ' | ' . $source['module'] . "\n" . "Il y a deja un repertoire $dir_module";
    118                         salvatore_fail('[Tireur] : Erreur', $corps);
    119                 }
    120 
    121                 $dir_target = realpath($dir_target);
    122                 if (is_link($dir_module) and readlink($dir_module) !== $dir_target) {
    123                         @unlink($dir_module);
    124                 }
    125                 if (!file_exists($dir_module)) {
    126                         symlink($dir_target, $dir_module);
    127                 }
    128 
    129                 $fichier_lang_master = $dir_module . '/' . $source['module'] . '_' . $source['lang'] . '.php';
    130                 // controle des erreurs : requiert au moins 1 fichier par module !
    131                 if (!file_exists($fichier_lang_master)){
    132                         salvatore_fail('[Tireur] : Erreur', "! Erreur pas de fichier de langue maitre $fichier_lang_master");
    133                 }
    134                 */
     83                                $dir_depot = $dir_depots . $source['dir_checkout'];
     84                                $subdir = '';
     85                                if (isset($source['dir'])) {
     86                                        $subdir = $source['dir'] . DIRECTORY_SEPARATOR;
     87                                }
     88
     89                                // reorganiser les fichiers a commit et preparer les messages de commit
     90                                // - ignorer les fichiers non modifies, ou non versionnes et qui ne doivent pas etre ajoutes
     91                                // - regrouper par auteur
     92
     93                                $commits_todo = array();
     94                                $salvatore_status_file = "salvatore_" . $source['methode'] . "_status_file";
     95                                foreach ($commit_infos as $commit_info) {
     96
     97                                        $file = $commit_info['file_name'];
     98
     99                                        if ($commit_info['lastmodified'] or $commit_info['must_add']) {
     100                                                $status = $salvatore_status_file($dir_depots . $source['dir_checkout'], $subdir . $file);
     101
     102                                                // fichier nouveau ou modifie (sinon on l'ignore)
     103                                                if ($status) {
     104                                                        $author = 0;
     105                                                        if (!empty($commit_info['author'])) {
     106                                                                $author = $commit_info['author'];
     107                                                        }
     108
     109                                                        if (!isset($commits_todo[$author])) {
     110                                                                $commits_todo[$author] = array(
     111                                                                        'files' => array(),
     112                                                                        'message' => []
     113                                                                );
     114                                                                if ($message_commit) {
     115                                                                        $commits_todo[$author]['message'][] = $message_commit;
     116                                                                }
     117                                                        }
     118                                                        $commits_todo[$author]['files'][] = $subdir . $file;
     119                                                        $message = "[Salvatore] [source:$subdir $module] Export depuis $url_gestionnaire";
     120                                                        if (!empty($commit_info['lang'])) {
     121                                                                $message .= " de la langue " . $commit_info['lang'];
     122                                                        }
     123                                                        if (!empty($commit_info['message'])) {
     124                                                                $message .= "\n            " . $commit_info['message'];
     125                                                        }
     126                                                        $commits_todo[$author]['message'][] = $message;
     127                                                }
     128
     129                                        }
     130
     131                                }
     132
     133                                // on peut maintenant lancer les commits
     134                                // ajoutons les credentials dans la source pour pouvoir commit ou push
     135                                $url_with_credentials = salvatore_set_credentials($source['methode'], $source['url'], $source['module']);
     136                                $parts = parse_url($url_with_credentials);
     137                                if (!empty($parts['user']) and !empty($parts['pass'])){
     138                                        $source['user'] = $parts['user'];
     139                                        $source['pass'] = $parts['pass'];
     140                                }
     141
     142                                foreach ($commits_todo as $author => $commit_todo) {
     143                                        if (!$author) {
     144                                                $author = _SALVATORE_AUTHOR_COMMITS;
     145                                        }
     146                                        $message = implode("\n", $commit_todo['message']);
     147                                        salvatore_log("<info>Commit de $author :</info>");
     148                                        salvatore_log("Fichiers : " . implode(', ', $commit_todo['files']));
     149                                        salvatore_log("Message : \n" . $message);
     150
     151                                        // TODO
     152                                        //salvatore_git_commit_files($dir_depots . $source['dir_checkout'], $commit_todo['files'], $message)
     153                                }
     154
     155                                die('?');
     156                        }
     157                }
     158
    135159        }
    136160
     
    138162}
    139163
    140 
    141 $propset = true;
    142 if (isset($NO_PROPSET)){
    143         $propset = false;
    144 }
    145 
    146 $tmp = _DIR_SALVATORE_TMP;
    147 
    148 /* MAIN ***********************************************************************/
    149 
    150 salvatore_log("\n=======================================\nPOUSSEUR\nPrend les fichiers langue dans sa copie locale et les commite SVN\n=======================================\n");
    151 
    152 $liste_sources = salvatore_charger_fichier_traductions(); // chargement du fichier traductions.txt
    153 
     164return;
     165
     166/*
    154167foreach ($liste_sources as $source){
    155168        $credentials = false;
     
    157170        salvatore_log("===== Module $module ======================================\n");
    158171
    159         $domaine_svn = parse_url($source[0]);
    160         $domaine_svn = $domaine_svn['host'];
    161         if (isset($domaines_exceptions) and is_array($domaines_exceptions) && in_array($domaine_svn, $domaines_exceptions)){
    162                 /**
    163                  * On est dans une exception (Github?)
    164                  */
    165                 if (is_array($domaines_exceptions_credentials) and isset($domaines_exceptions_credentials[$domaine_svn])){
    166                         $user = $domaines_exceptions_credentials[$domaine_svn]['user'];
    167                         $pass = $domaines_exceptions_credentials[$domaine_svn]['pass'];
    168                         $credentials = true;
    169                 }
    170         }
    171         if (isset(${$module . '_user'})){
    172                 $user = ${$module . '_user'};
    173                 $pass = ${$module . '_passwd'};
    174         } elseif (!$credentials) {
    175                 $user = $SVNUSER;
    176                 $pass = $SVNPASSWD;
    177         }
    178172
    179173        $f = _DIR_SALVATORE_TMP . $module . '/';
     
    181175        /**
    182176         * On ajoute les .xml
    183          */
     177         * /
    184178        salvatore_log(exec("svn add --quiet $f*xml 2>/dev/null") . "\n");
    185179        $ignore = array(
     
    207201                                         * Si plusieurs commiteurs (veut dire que plusieurs fichiers sont à commiter)
    208202                                         * ou si le fichier original est modifié, on ne commit que fichier par fichier
    209                                          */
     203                                         * /
    210204                                        if (count($commiteurs)>1 || in_array(substr(exec('svn status ' . _DIR_SALVATORE_TMP . $source[1] . '/' . $source[1] . '_' . $source[2] . '.php'), 0, 1), array('A', 'M'))){
    211205                                                $path = $f . $module . '_' . $lang . '.php';
     
    213207                                                /**
    214208                                                 * Sinon on ne s'embarasse pas, on balance tout avec cet utilisateur
    215                                                  */
     209                                                 * /
    216210                                                $path = $f;
    217211                                        }
     
    230224                 * Si on a encore un fichier ajouté ou modifié
    231225                 * On commite le tout avec salvatore
    232                  */
     226                 * /
    233227                if (strlen(trim(exec("svn status $f |awk /^[MA]/")))>1){
    234228                        $commit_message = "[Salvatore] [source:$path_svn $module] Export depuis http://trad.spip.net\n\n";
Note: See TracChangeset for help on using the changeset viewer.