source: spip-zone/_outils_/spip-cli/trunk/spip-cli/CoreTelecharger.php @ 109675

Last change on this file since 109675 was 109675, checked in by rastapopoulos@…, 3 years ago

Modif ISO de la commande Télécharger : on utilise la liste mutualisée des versions qui vient de l'autre commande, et ça marche ! C'est ISO donc pour l'instant ça continue de ne gérer que la partie branches, mais du coup on va pouvoir gérer les tags aussi ensuite.

File size: 2.3 KB
Line 
1<?php
2
3use Symfony\Component\Console\Command\Command;
4use Symfony\Component\Console\Input\InputArgument;
5use Symfony\Component\Console\Input\InputInterface;
6use Symfony\Component\Console\Input\InputOption;
7use Symfony\Component\Console\Output\OutputInterface;
8
9class CoreTelecharger extends Command {
10        protected function configure() {
11                $this
12                        ->setName('core:telecharger')
13                        ->setDescription('Télécharger SPIP dans un dossier (par défaut, la dernière version stable)')
14                        ->addOption(
15                                'branche',
16                                'b',
17                                InputOption::VALUE_OPTIONAL,
18                                'Donner explicitement la version à télécharger.',
19                                '3.2' // Par défaut, la dernière version stable
20                        )
21                        ->setAliases(array(
22                                'dl' // abbréviation commune pour "download"
23                        ))
24                ;
25        }
26
27        protected function execute(InputInterface $input, OutputInterface $output) {
28                // On travaille dans le dossier courant
29                $dossier = getcwd();
30               
31                $lister_versions = $this->getApplication()->find('core:listerversions');
32                $versions = $lister_versions->get_versions();
33               
34                // Liste des branches acceptées
35                $branches_ok = $versions['branches'];
36                // Branche séléctionnée
37                $branche = $input->getOption('branche');
38               
39                // On vérifie qu'on est pas déjà dans une installation de SPIP !
40                if ($GLOBALS['spip_loaded']) {
41                        $output->writeln('<info>Vous êtes déjà dans une installation de SPIP '.$GLOBALS['spip_version_branche'].'.</info> <comment>Téléchargement annulé.</comment>');
42                }
43                // Sinon c'est bon on peut télécharger SPIP
44                else {
45                        // On vérifie que l'on connait la version
46                        if (!in_array($branche, array_keys($branches_ok))){
47                                $output->writeln(array(
48                                        "<error>La version \"$branche\" n'est pas prise en charge.</error>",
49                                        'Branches supportées : <info>'.join('</info>, <info>', array_keys($branches_ok)).'</info>'
50                                ));
51                        }
52                        // Si c'est bon, on teste si on peut utiliser "passthru"
53                        elseif (!function_exists('passthru')){
54                                $output->writeln("<error>Votre installation de PHP doit pouvoir exécuter des commandes externes avec la fonction passthru().</error>");
55                        }
56                        // Si c'est bon on continue
57                        else{
58                                $output->writeln("<info>C'est parti pour le téléchargement de la branche $branche !</info>");
59                       
60                                // On lance la commande SVN dans le répertoire courant
61                                passthru('svn co '.$branches_ok[$branche].' .');
62                        }
63                }
64        }
65}
Note: See TracBrowser for help on using the repository browser.