Changeset 107688 in spip-zone


Ignore:
Timestamp:
Nov 21, 2017, 2:32:45 PM (2 years ago)
Author:
tcharlss@…
Message:

Poser des questions pour les options aussi, constante DIRECTORY_SEPARATOR au lieu de '/' en dur, + variable nécessaire au début

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _outils_/spip-cli/trunk/spip-cli/IntegraalGenerer.php

    r107678 r107688  
    1111/**
    1212 * Générer un nouveau projet à partir de l'échafaudage Intégraal
    13  * 
     13 *
    1414 * La commande génère un nouveau projet dans le dossier des plugins, et renomme les fichiers et contenus.
    1515 * Usage : spip integraal:generer -c /dossier/local/integraal monprojet "Mon super projet"
     
    6161                // On récupère les arguments
    6262                $prefixe = $input->getArgument('prefixe');
    63                
     63                $nom = $input->getArgument('nom');
     64
    6465                // On récupère les options
    65                 $chemin_integraal = rtrim($input->getOption('chemin_integraal'), '/') . '/';
     66                $chemin_integraal = rtrim($input->getOption('chemin_integraal'), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
    6667                $auteur = $input->getOption('auteur');
    6768                $url = $input->getOption('url');
    6869                $version_theme = $input->getOption('theme');
    69                
     70
    7071                // Si des arguments nécessaires manquent, on pose des questions
    7172                if (!$prefixe) {
     
    9192                        );
    9293                        $version_theme = $helper->ask($input, $output, $question_theme);
     94                        if (!in_array($version_theme, array('gulp', 'scssphp'))) {
     95                                $version_theme = 'gulp';
     96                        }
    9397                        $output->writeln("Version choisie : $version_theme");
    9498                }
    95                
     99                if (!$auteur) {
     100                        $helper = $this->getHelper('question');
     101                        $question_auteur = new Question('Auteur du projet : ');
     102                        $auteur = $helper->ask($input, $output, $question_auteur);
     103                        $output->writeln("<info>Auteur utilisé : $auteur</info>");
     104                }
     105                if (!$url) {
     106                        $helper = $this->getHelper('question');
     107                        $question_url = new Question('URL de l’auteur du projet : ');
     108                        $url = $helper->ask($input, $output, $question_url);
     109                        $output->writeln("<info>URL de l’auteur utilisée : $url</info>");
     110                }
     111
     112
    96113                // On se déplace dans le dossier des plugins si on est dans un SPIP
    97114                if (
     
    107124                        // On se déplace dans le dossier des plugins
    108125                        chdir(_DIR_PLUGINS);
    109                        
     126
    110127                        // On télécharge Intégraal
    111128                        $output->writeln("<info>Téléchargement de l’échafaudage IntéGraal.</info>");
    112                        
     129
    113130                        // On créé un nouveau répertoire pour y accueillir les 3 plugins d'Intégraal
    114131                        if (!$dir_integraal = mkdir($prefixe, 0775)) {
    115132                                $output->writeln("<error>Le répertoire « $prefixe » n’a pas pu être créé dans le dossier des plugins.</error>");
    116133                        } else {
    117                                
     134
    118135                                // On se déplace dans le dossier du nouveau projet
    119136                                chdir($prefixe);
    120                                
     137
    121138                                // Retrouver le chemin correspondant à la version du thème choisie
    122                                 if (!in_array($version_theme, array('gulp', 'scssphp'))) {
    123                                         $version_theme = 'gulp';
    124                                         $output->writeln("<error>Version du thème inconnue. La version « $version_theme » sera utilisée</error>");
    125                                 }
    126139                                $chemins_theme = array(
    127140                                        'gulp'    => 'theme/trunk',
     
    129142                                );
    130143                                $chemin_theme = $chemins_theme[$version_theme];
    131                                
     144
    132145                                // On lance la commande SVN pour télécharger les 3 plugins
    133146                                // dans le répertoire courant
     
    146159                                        }
    147160                                }
    148                                
     161
    149162                                if ($erreur_telecharger) {
    150163                                        $output->writeln("<error>Une erreur s’est produite durant le téléchargement.</error>");
    151164                                } else {
    152                                        
     165
    153166                                        // Mettre les bonnes permissions
    154167                                        passthru("chmod 775 -R *");
    155                                        
     168
    156169                                        // On renomme le dossier du theme
    157                                         $dossier_theme = ltrim(strrchr($chemin_theme, '/'), '/');
     170                                        $dossier_theme = ltrim(strrchr($chemin_theme, DIRECTORY_SEPARATOR), DIRECTORY_SEPARATOR);
    158171                                        passthru("mv $dossier_theme theme", $erreur);
    159172                                        if ($erreur){
    160173                                                $output->writeln("<error>Le dossier du theme (${dossier_theme}) n’a pas pu être renommé en « theme »</error>");
    161174                                        }
    162                                        
     175
    163176                                        // On renomme tous les fichiers avec "integraal"
    164177                                        passthru("find . | rename -v 's/integraal/{$prefixe}/g'", $erreur);
    165                                        
     178
    166179                                        // On affiche une erreur mais on continue quand même le renommage des contenus ensuite
    167180                                        if ($erreur !== 0) {
    168181                                                $output->writeln("<error>Une erreur s’est produite durant le renommage des fichiers.</error>");
    169182                                        }
    170                                        
     183
    171184                                        // On remplace à l'intérieur des contenus
    172185                                        passthru("find . -type f -exec sed -i 's/integraal/{$prefixe}/g' {} \;", $erreur);
    173186                                        passthru("find . -type f -exec sed -i 's/IntéGraal/{$nom}/g' {} \;", $erreur);
    174                                        
     187
    175188                                        // Si on demande à changer l'auteur
    176189                                        if ($auteur) {
     
    181194                                                passthru("find . -type f -exec sed -i 's|http://www\.ldd\.fr|{$url}|g' {} \;", $erreur);
    182195                                        }
    183                                        
     196
    184197                                        $output->writeln('<info>C’est fini ! Vous pouvez maintenant personnaliser les fichiers selon vos besoins.</info>');
     198                                        $output->writeln('<info>Les plugins ont été générés dans ' . _DIR_PLUGINS . $prefixe . '.</info>');
    185199                                }
    186200                        }
Note: See TracChangeset for help on using the changeset viewer.