source: spip-zone/_plugins_/trad-lang/trunk/inc/salvatore_tireur.php @ 119611

Last change on this file since 119611 was 119611, checked in by Cerdic, 10 months ago

utiliser la fonction de sortie de symphony pour les logs, ce qui permet un peu de formattage

  • Property svn:eol-style set to native
File size: 3.2 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-2013
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 * @param array $liste_sources
29 * @param string|null $tmp
30 * @return bool
31 * @throws Exception
32 */
33function salvatore_tirer($liste_sources, $dir_modules=null, $dir_depots=null) {
34        include_spip('inc/salvatore');
35        salvatore_init();
36
37        if (is_null($dir_modules)) {
38                $dir_modules = _DIR_SALVATORE_MODULES;
39        }
40        salvatore_check_dir($dir_modules);
41
42        if (is_null($dir_depots)) {
43                $dir_depots = _DIR_SALVATORE_DEPOTS;
44        }
45        salvatore_check_dir($dir_depots);
46
47        $done = array();
48
49        foreach ($liste_sources as $source){
50                salvatore_log("\n<info>--- Module " . $source['module'] . " | " . $source['dir_module'] . " | " . $source['url']."</info>");
51
52                $url_with_credentials = salvatore_set_credentials($source['methode'], $source['url'], $source['module']);
53
54                $dir_checkout = $dir_depots . $source['dir_checkout'];
55                $dir_module = $dir_modules . $source['dir_module'];
56                $dir_target = $dir_checkout;
57                if ($source['dir']) {
58                        $dir_target .= "/" . $source['dir'];
59                }
60
61                $return = 0;
62                if (empty($done[$dir_checkout])) {
63                        $cmd = "checkout.php"
64                          . ' ' . $source['methode']
65                                . ($source['branche'] ? ' -b'.$source['branche'] : '')
66                                . ' ' . $url_with_credentials
67                                . ' ' . $dir_checkout;
68
69                        echo "$cmd\n";
70                        passthru("export FORCE_RM_AND_CHECKOUT_AGAIN_BAD_DEST=1 && $cmd 2>/dev/null", $return);
71                        $done[$dir_checkout] = true;
72                }
73
74                if ($return !== 0 or !is_dir($dir_checkout) or !is_dir($dir_target)) {
75                        $corps = $source['url'] . ' | ' . $source['module'] . "\n" . "Erreur lors du checkout";
76                        salvatore_fail('[Tireur] : Erreur', $corps);
77                }
78
79                if (file_exists($dir_module) and !is_link($dir_module)) {
80                        $corps = $source['url'] . ' | ' . $source['module'] . "\n" . "Il y a deja un repertoire $dir_module";
81                        salvatore_fail('[Tireur] : Erreur', $corps);
82                }
83
84                $dir_target = realpath($dir_target);
85                if (is_link($dir_module) and readlink($dir_module) !== $dir_target) {
86                        @unlink($dir_module);
87                }
88                if (!file_exists($dir_module)) {
89                        symlink($dir_target, $dir_module);
90                }
91
92                $fichier_lang_master = $dir_module . '/' . $source['module'] . '_' . $source['lang'] . '.php';
93                // controle des erreurs : requiert au moins 1 fichier par module !
94                if (!file_exists($fichier_lang_master)){
95                        salvatore_fail('[Tireur] : Erreur', "! Erreur pas de fichier de langue maitre $fichier_lang_master");
96                }
97        }
98
99        return true;
100}
101
Note: See TracBrowser for help on using the repository browser.