Changeset 107675 in spip-zone


Ignore:
Timestamp:
Nov 20, 2017, 11:43:59 PM (18 months ago)
Author:
tcharlss@…
Message:

Ajustements pour la génération d'integraal : on peut choisir la version du thème avec l'option -t : gulp (défaut) ou scssphp

File:
1 edited

Legend:

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

    r93689 r107675  
    66use Symfony\Component\Console\Input\InputOption;
    77use Symfony\Component\Console\Output\OutputInterface;
     8use Symfony\Component\Console\Question\ChoiceQuestion;
    89
    910/**
     
    4748                                'URL de l’auteur du projet'
    4849                        )
     50                        ->addOption(
     51                                'theme',
     52                                't',
     53                                InputOption::VALUE_REQUIRED,
     54                                'Version du thème à utiliser',
     55                                'gulp'
     56                        )
    4957                ;
    5058        }
     
    5866               
    5967                // On récupère les options
    60                 $chemin_integraal = $input->getOption('chemin_integraal');
     68                $chemin_integraal = rtrim($input->getOption('chemin_integraal'), '/') . '/';
    6169                $auteur = $input->getOption('auteur');
    6270                $url = $input->getOption('url');
     71                $version_theme = $input->getOption('theme');
     72               
     73                // [TODO] Si des arguments nécessaires manquent, on pose des questions
     74                /*
     75                if (!$version_theme) {
     76                        $helper = $this->getHelper('question');
     77                        $question_theme = new ChoiceQuestion(
     78                                'Quelle version du thème utiliser ? (défaut : gulp)',
     79                                array('gulp', 'scssphp'),
     80                                0
     81                        );
     82                        $version_theme = $helper->ask($input, $output, $question_theme);
     83                        $output->writeln('Vous avez choisi : '.$version_theme);
     84                }
     85                */
    6386               
    6487                // On se déplace dans le dossier des plugins si on est dans un SPIP
     
    79102                        $output->writeln("<info>Téléchargement de l’échafaudage IntéGraal.</info>");
    80103                       
    81                         // On lance la commande SVN dans le répertoire courant
    82                         passthru("svn export {$chemin_integraal} {$prefixe}", $erreur);
    83                        
    84                         if ($erreur !== 0) {
    85                                 $output->writeln("<error>Une erreur s’est produite durant le téléchargement.</error>");
     104                        // On créé un nouveau répertoire pour y accueillir les 3 plugins d'Intégraal
     105                        if (!$dir_integraal = mkdir($prefixe, 0775)) {
     106                                $output->writeln("<error>Le répertoire « $prefixe » n’a pas pu être créé dans le dossier des plugins.</error>");
    86107                        } else {
    87                                 passthru("chmod 775 -R {$prefixe}");
    88108                               
    89109                                // On se déplace dans le dossier du nouveau projet
    90110                                chdir($prefixe);
    91111                               
    92                                 // On renomme tous les fichiers avec "integraal"
    93                                 passthru("find . | rename -v 's/integraal/{$prefixe}/g'", $erreur);
     112                                // Retrouver le chemin correspondant à la version du thème choisie
     113                                $chemins_theme = array(
     114                                        'gulp'    => 'theme/trunk',
     115                                        'scssphp' => 'theme/branches/scssphp',
     116                                );
     117                                $chemin_theme = $chemins_theme[$version_theme];
    94118                               
    95                                 // On affiche une erreur mais on continue quand même le renommage des contenus ensuite
    96                                 if ($erreur !== 0) {
    97                                         $output->writeln("<error>Une erreur s’est produite durant le renommage des fichiers.</error>");
     119                                // On lance la commande SVN pour télécharger les 3 plugins
     120                                // dans le répertoire courant
     121                                $erreur_telecharger = false;
     122                                $sous_chemins_integraal = array(
     123                                        'squelettes',
     124                                        $chemin_theme,
     125                                        'core'
     126                                );
     127                                foreach($sous_chemins_integraal as $dossier){
     128                                        $chemin_sous_dossier = $chemin_integraal . $dossier;
     129                                        passthru("svn export {$chemin_sous_dossier}", $erreur);
     130                                        if ($erreur !== 0) {
     131                                                $erreur_telecharger = true;
     132                                                break;
     133                                        }
    98134                                }
    99135                               
    100                                 // On remplace à l'intérieur des contenus
    101                                 passthru("find . -type f -exec sed -i 's/integraal/{$prefixe}/g' {} \;", $erreur);
    102                                 passthru("find . -type f -exec sed -i 's/IntéGraal/{$nom}/g' {} \;", $erreur);
    103                                
    104                                 // Si on demande à changer l'auteur
    105                                 if ($auteur) {
    106                                         passthru("find . -type f -exec sed -i 's/Les Développements Durables/{$auteur}/g' {} \;", $erreur);
     136                                if ($erreur_telecharger) {
     137                                        $output->writeln("<error>Une erreur s’est produite durant le téléchargement.</error>");
     138                                } else {
     139                                       
     140                                        // Mettre les bonnes permissions
     141                                        passthru("chmod 775 -R *");
     142                                       
     143                                        // On renomme le dossier du theme
     144                                        $dossier_theme = ltrim(strrchr($chemin_theme, '/'), '/');
     145                                        passthru("mv $dossier_theme theme", $erreur);
     146                                        if ($erreur){
     147                                                $output->writeln("<error>Le dossier du theme (${dossier_theme}) n’a pas pu être renommé en « theme »</error>");
     148                                        }
     149                                       
     150                                        // On renomme tous les fichiers avec "integraal"
     151                                        passthru("find . | rename -v 's/integraal/{$prefixe}/g'", $erreur);
     152                                       
     153                                        // On affiche une erreur mais on continue quand même le renommage des contenus ensuite
     154                                        if ($erreur !== 0) {
     155                                                $output->writeln("<error>Une erreur s’est produite durant le renommage des fichiers.</error>");
     156                                        }
     157                                       
     158                                        // On remplace à l'intérieur des contenus
     159                                        passthru("find . -type f -exec sed -i 's/integraal/{$prefixe}/g' {} \;", $erreur);
     160                                        passthru("find . -type f -exec sed -i 's/IntéGraal/{$nom}/g' {} \;", $erreur);
     161                                       
     162                                        // Si on demande à changer l'auteur
     163                                        if ($auteur) {
     164                                                passthru("find . -type f -exec sed -i 's/Les Développements Durables/{$auteur}/g' {} \;", $erreur);
     165                                        }
     166                                        // Si on demande à changer l'url
     167                                        if ($url) {
     168                                                passthru("find . -type f -exec sed -i 's|http://www\.ldd\.fr|{$url}|g' {} \;", $erreur);
     169                                        }
     170                                       
     171                                        $output->writeln('<info>C’est fini ! Vous pouvez maintenant personnaliser les fichiers selon vos besoins.</info>');
    107172                                }
    108                                 // Si on demande à changer l'auteur
    109                                 if ($url) {
    110                                         passthru("find . -type f -exec sed -i 's|http://www\.ldd\.fr|{$url}|g' {} \;", $erreur);
    111                                 }
    112                                
    113                                 $output->writeln('<info>C’est fini ! Vous pouvez maintenant personnaliser les fichiers selon vos besoins.</info>');
    114173                        }
    115174                }
Note: See TracChangeset for help on using the changeset viewer.