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

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

cartouche a jour partout

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