source: spip-zone/_dev_/salvatore/trunk/tireur.php @ 119589

Last change on this file since 119589 was 109977, checked in by kent1@…, 3 years ago

2018

File size: 4.8 KB
Line 
1<?php
2
3/*
4    This file is part of Salvatore, the translation robot of Trad-lang (SPIP)
5
6    Salvatore is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or
9    (at your option) any later version.
10
11    Trad-Lang is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with Trad-Lang; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20    Copyright 2003-2018
21        Florent Jugla <florent.jugla@eledo.com>,
22        Philippe Riviere <fil@rezo.net>,
23        Chryjs <chryjs!@!free!.!fr>,
24                kent1 <kent1@arscenic.info>
25*/
26
27
28/**
29 * Ce script va chercher les fichiers définis dans le fichier traductions/traductions.txt
30 *
31 */
32require_once(dirname(__FILE__).'/inc_tradlang.php');
33require_once(_DIR_ETC.'salvatore_passwd.inc');
34$tmp=_SALVATORE_TMP;
35
36trad_log("\n=======================================\nTIREUR\nVa chercher les fichiers dans SVN et les depose dans sa copie locale\n=======================================\n");
37
38$liste_sources=charger_fichier_traductions(); // chargement du fichier traductions.txt
39
40$ret=0;
41$cmd = false;
42
43foreach ($liste_sources as $source) {
44        if (isset($domaines_exceptions) && is_array($domaines_exceptions) && in_array($domaine_svn, $domaines_exceptions)) {
45                /**
46                 * On est dans une exception (Github?)
47                 */
48                if (is_array($domaines_exceptions_credentials) and isset($domaines_exceptions_credentials[$domaine_svn])) {
49                        $user = $domaines_exceptions_credentials[$domaine_svn]['user'];
50                        $pass = $domaines_exceptions_credentials[$domaine_svn]['pass'];
51                        $credentials = true;
52                }
53        }
54        if (isset(${$module.'_user'})) {
55                $user = ${$module.'_user'};
56                $pass = ${$module.'_passwd'};
57        } elseif (!$credentials) {
58                $user = $SVNUSER;
59                $pass = $SVNPASSWD;
60        }
61        trad_log("\n===== Module ".$source[1]." =====\n");
62        if (is_dir($tmp.$source[1].'/.svn')) {
63                $depot = "env LANG=en_US svn info --non-interactive --trust-server-cert --username $user --password $pass ".$tmp.$source[1]." | awk '/^URL:/ { print $2 }'";
64                $depot = exec($depot, $depot);
65                $depot = $depot.'/';
66                if ($depot != $source[0]) {
67                        $domaine_depot = parse_url($depot);
68                        $domaine_depot = $domaine_depot['host'];
69                        $domaine_source = parse_url($source[0]);
70                        $domaine_source = $domaine_source['host'];
71                        /**
72                         * Simple switch si même serveur sinon on supprime le répertoire et on refait un checkout
73                         */
74                        if ($domaine_depot == $domaine_source) {
75                             $cmd = "svn switch --non-interactive --ignore-ancestry --trust-server-cert --username $user --password $pass " . $source[0] . ' ' . $tmp.$source[1].'/';
76                        } else {
77                                $cmd = 'rm -Rvf '.$tmp.$source[1]."/ && svn checkout  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive ". $source[0].'/ '.$tmp.$source[1].'/';
78                        }
79                } else {
80                        $revision_actuelle = "env LANG=en_US svn info  --non-interactive --trust-server-cert --username $user --password $pass ".$tmp.$source[1]." | awk '/^Revision:/ { print $2 }'";
81                        $revision_actuelle = exec($revision_actuelle, $revision_actuelle);
82                        $last_revision = "env LANG=en_US svn info  --non-interactive --trust-server-cert --username $user --password $pass ".$source[0]." | awk '/^Last\ Changed\ Rev:/ { print $4 }'";
83                        $last_revision = exec($last_revision, $last_revision);
84                        if ($revision_actuelle >= $last_revision) {
85                                trad_log("Pas besoin de mettre à jour\n");
86                        } else {
87                                $cmd = "svn update  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive --accept theirs-full ".$tmp.$source[1].'/';
88                        }
89                }
90        } else {
91                $cmd = "svn checkout  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive ". $source[0].'/ '.$tmp.$source[1].'/';
92        }
93
94        if ($cmd) {
95                exec("$cmd 2> /dev/null", $out, $int);
96                if ($int == 0) {
97                        trad_log(end($out)."\n");
98                } else {
99                        $sujet = 'Tireur : Erreur';
100                        $corps = $source[0] . '/ ' . $source[1]."\n\n";
101                        $corps .= "L'adresse distante de ce module n'est certainement plus valide\n\n";
102                        trad_sendmail($sujet, $corps);
103                        die("L'adresse distante de ce module n'est certainement plus valide\n\n");
104                }
105        }
106
107        // controle des erreurs : requiert au moins 1 fichier par module !
108        if (!file_exists($tmp.$source[1].'/'.$source[1].'_'.$source[2].'.php')) {
109                $ret=1;
110                $sujet = 'Tireur : Erreur';
111                $corps = "! Erreur pas de fichier de langue conforme dans le module : $tmp".$source[1]."\n";
112                trad_sendmail($sujet, $corps);
113                die("! Erreur pas de fichier de langue conforme dans le module : $tmp".$source[1]."\n");
114        }
115        $cmd = false;
116}
117
118return $ret;
Note: See TracBrowser for help on using the repository browser.