Changeset 119860 in spip-zone


Ignore:
Timestamp:
Jan 20, 2020, 1:53:10 PM (8 months ago)
Author:
Cerdic
Message:

fin d'implementation pousseur

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

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk

    • Property subgit:lock:e670a558b74eb7058f1a5759957e54a0ac6a082c deleted
    • Property subgit:lock:0bf209dc4d00f6851146ea94982d0809a6908a7b set to 2020-01-20T15:00:30.963
  • _plugins_/trad-lang/trunk/inc/salvatore.php

    r119858 r119860  
    8686                }
    8787
     88                // TODO : a tester/valider quand on sera en prod si on utilise encore
    8889                if (!defined('_SALVATORE_SVN_PROPSET')) {
    89                         define('_SALVATORE_SVN_PROPSET', true);
     90                        define('_SALVATORE_SVN_PROPSET', false);
    9091                }
    9192
  • _plugins_/trad-lang/trunk/inc/salvatore_pousseur.php

    r119859 r119860  
    187187}
    188188
    189 return;
    190 
    191 /*
    192 foreach ($liste_sources as $source){
    193         $credentials = false;
    194         $module = $source[1];
    195         salvatore_log("===== Module $module ======================================\n");
    196 
    197 
    198         $f = _DIR_SALVATORE_TMP . $module . '/';
    199 
    200         /**
    201          * On ajoute les .xml
    202          * /
    203         salvatore_log(exec("svn add --quiet $f*xml 2>/dev/null") . "\n");
    204         $ignore = array(
    205                 //      'spip','ecrire','public'
    206                 'couteau', 'couteauprive', 'paquet-couteau_suisse'// désactivés suite à scandale, je ne sais pas comment le gérer correctement
    207         );
    208 
    209         if (in_array($module, $ignore)){
    210                 salvatore_log("$module ignore'\n");
    211         } else {
    212                 $depot = exec("env LC_MESSAGES=en_US.UTF-8 svn info $f |awk '/^Repository Root/ { print $3 }'") . '/';
    213                 $svn_url = exec("env LC_MESSAGES=en_US.UTF-8 svn info $f |awk '/^URL/ { print $2 }'") . '/';
    214                 $path_svn = str_replace($depot, '', $svn_url);
    215                 $message = $message_commit = $commiteurs = false;
    216                 if (file_exists($f . 'message_commit.inc')){
    217                         $message = true;
    218                         require_once(dirname(__FILE__) . '/' . str_replace('./', '', $f) . 'message_commit.inc');
    219                 }
    220 
    221                 if (is_array($commiteurs) && count($commiteurs)>0){
    222                         foreach ($commiteurs as $lang => $email){
    223                                 if (strlen($email)>1){
    224                                         $message_commit_unique = "[Salvatore] [source:$path_svn $module] Export depuis http://trad.spip.net de la langue $lang";
    225                                         /**
    226                                          * Si plusieurs commiteurs (veut dire que plusieurs fichiers sont à commiter)
    227                                          * ou si le fichier original est modifié, on ne commit que fichier par fichier
    228                                          * /
    229                                         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'))){
    230                                                 $path = $f . $module . '_' . $lang . '.php';
    231                                         } else {
    232                                                 /**
    233                                                  * Sinon on ne s'embarasse pas, on balance tout avec cet utilisateur
    234                                                  * /
    235                                                 $path = $f;
    236                                         }
    237                                         salvatore_log("On devrait commiter $path avec comme message '$message_commit_unique' avec l'email $email\n");
    238                                         salvatore_log(exec("svn commit $path --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert -m " . escapeshellarg($message_commit_unique)) . "\n");
    239                                         $revision = exec("svn up $path && env LC_MESSAGES=en_US.UTF-8 svn info $path |awk '/^Last Changed Rev/ { print $4 }'");
    240                                         if ($propset){
    241                                                 salvatore_log(exec("svn propset --revprop -r $revision svn:author '$email' $path --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert") . "\n");
    242                                                 salvatore_log("svn propset --revprop -r $revision svn:author '$email' $path --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert\n");
    243                                         }
    244                                 }
    245                         }
    246                 }
    247 
    248                 /**
    249                  * Si on a encore un fichier ajouté ou modifié
    250                  * On commite le tout avec salvatore
    251                  * /
    252                 if (strlen(trim(exec("svn status $f |awk /^[MA]/")))>1){
    253                         $commit_message = "[Salvatore] [source:$path_svn $module] Export depuis http://trad.spip.net\n\n";
    254                         $commit_message .= $message_commit . "\n";
    255                         salvatore_log("On commit $f car il reste des fichiers\n");
    256                         salvatore_log(exec("svn commit $f --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert -m " . escapeshellarg($commit_message)) . "\n");
    257                         $revision_fin = exec("svn up $f && env LC_MESSAGES=en_US.UTF-8 svn info $f |awk '/^Last Changed Rev/ { print $4 }'");
    258                         if (!$credentials && $propset){
    259                                 salvatore_log(exec("svn propset --revprop -r $revision_fin svn:author 'salvatore@rezo.net' $f --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert") . "\n");
    260                                 salvatore_log("svn propset --revprop -r $revision_fin svn:author 'salvatore@rezo.net' $f --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert\n");
    261                         }
    262                 }
    263 
    264                 if (file_exists($f . 'message_commit.inc')){
    265                         unlink($f . 'message_commit.inc');
    266                 }
    267         }
    268 }
    269 
    270 return 0;
    271 /* MAIN ***********************************************************************/
  • _plugins_/trad-lang/trunk/inc/salvatore_svn.php

    r119844 r119860  
    6767        return implode("\n", $output);
    6868}
     69
     70
     71/**
     72 * Commit une liste de fichiers avec un message et auteur fourni
     73 *
     74 * @param string $dir_repo
     75 * @param array $files
     76 * @param string $message
     77 * @param string $author
     78 * @param string $user
     79 * @param string $pass
     80 * @return array
     81 */
     82function salvatore_svn_commit_files($dir_repo, $files, $message, $author, $user=null, $pass=null) {
     83
     84        // lister deja les fichiers qui necessitent un svn add (fichiers ajoutes qui ne sont pas dans le repo)
     85        $files_to_add = array();
     86        foreach ($files as $file) {
     87                if (!salvatore_svn_lastmodified_file($dir_repo, $file)) {
     88                        $files_to_add[] = $file;
     89                }
     90        }
     91
     92        $files = array_map('escapeshellarg', $files);
     93        $files = implode(' ', $files);
     94
     95        $files_to_add = array_map('escapeshellarg', $files_to_add);
     96        $files_to_add = implode(' ', $files_to_add);
     97
     98        $d = getcwd();
     99        chdir($dir_repo);
     100        $output = array();
     101        $res = true;
     102
     103        $auth = "";
     104        $auth_disp = "";
     105        if ($user) {
     106                $auth .= " --username=".escapeshellarg($user);
     107                $auth_disp .= " --username=".escapeshellarg('xxxxx');
     108        }
     109        if ($user) {
     110                $auth .= " --password=".escapeshellarg($pass);
     111                $auth_disp .= " --password=".escapeshellarg('xxxxx');
     112        }
     113
     114        $commands = [];
     115        if ($files_to_add) {
     116                $commands[] = "svn add --quiet $files_to_add 2>&1";
     117        }
     118        // TODO : activer le commit quand on sera en prod
     119        // $commands[] = "svn commit $files{$auth} --no-auth-cache --non-interactive --trust-server-cert -m " . escapeshellarg($message) . " 2>&1";
     120
     121        foreach ($commands as $command) {
     122                $output[] = "> " . ($auth ? str_replace($auth, $auth_disp, $command) : $command);
     123                $return_var = 0;
     124                exec($command, $output, $return_var);
     125                // si une erreur a eu lieu le signaler dans le retour
     126                if ($return_var) {
     127                        $res = false;
     128                }
     129        }
     130        if ($res and $author and _SALVATORE_SVN_PROPSET) {
     131                if ($revision = exec("svn up . && env LC_MESSAGES=en_US.UTF-8 svn info . |awk '/^Last Changed Rev/ { print $4 }'")) {
     132                        $command = "svn propset --revprop -r $revision svn:author ".escapeshellarg($author). " .{$auth} --no-auth-cache --non-interactive --trust-server-cert";
     133                        $output[] = "> " . ($auth ? str_replace($auth, $auth_disp, $command) : $command);
     134                        exec($command, $output, $return_var);
     135                        if ($return_var) {
     136                                $res = false;
     137                        }
     138                }
     139        }
     140        chdir($d);
     141
     142        return array($res, implode("\n", $output));
     143}
     144
     145
     146
     147/**
     148 * Rien a faire : en svn le commit push, mais fonction symetrique de git
     149 *
     150 * @param string $dir_repo
     151 * @param null $user
     152 * @param null $pass
     153 * @return array
     154 */
     155function salvatore_svn_push_repository($dir_repo, $user=null, $pass=null) {
     156        return array(true, '');
     157}
Note: See TracChangeset for help on using the changeset viewer.