Changeset 110802 in spip-zone


Ignore:
Timestamp:
Jun 22, 2018, 8:31:17 AM (3 years ago)
Author:
marcimat@…
Message:

Tentons d’être plus tolérant avec Windows sur l’application spipmu.

  • on utilise la lib Process de Synfony, pour utiliser PhpExecutableFinder?() afin de localiser le chemin du binaire PHP correctement
  • on continue par contre de lancer les commandes aux sites des mutus avec passthru() car je vois pas comment gérer les interactions des commandes lancées si on lance la commande avec Process
  • on adapte la commande si on est sous windows pour passer l’environnement HTTP_HOST

A priori, ça marche…

Mise à jour
`
svn up
composer update
`

Location:
_outils_/spip-cli/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _outils_/spip-cli/trunk/bin/spipmu

    r110791 r110802  
    2222]);
    2323$app->run();
    24 
    25 /**
    26  * Pour l’instant se lance à la racine d’un spip mutu ayant un répertoire "sites"
    27  */
    28 /*
    29 
    30 array_shift($argv); // chemin du script
    31 $glob = array_shift($argv);
    32 $dir = realpath('sites');
    33 
    34 $dirs = new GlobIterator($dir . DIRECTORY_SEPARATOR . $glob, FilesystemIterator::SKIP_DOTS);
    35 foreach ($dirs as $d) {
    36         if (!$d->isDir()) {
    37                 continue;
    38         }
    39         $site = $d->getFilename();
    40         echo "\n$site\n";
    41         echo str_repeat("=", strlen($site)) . "\n";
    42         $cmd = "HTTP_HOST=\"$site\" /usr/bin/env php " . __DIR__ . DIRECTORY_SEPARATOR . 'spip.php ' . implode(" ", $argv);
    43         // echo $cmd . "\n";
    44         passthru($cmd);
    45 }*/
  • _outils_/spip-cli/trunk/composer.json

    r110765 r110802  
    88                        "symfony/console": "^2.8",
    99                        "symfony/finder": "^2.8",
    10                         "pimple/pimple" : "^3.2"
     10                        "pimple/pimple" : "^3.2",
     11                "symfony/process": "^2.8"
    1112        },
    1213        "config": {
  • _outils_/spip-cli/trunk/composer.lock

    r110765 r110802  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "fd4b6a8b34cc1d268719913a320e7576",
     7    "content-hash": "0a25b59cb6da483a570507d308fd73c8",
    88    "packages": [
    99        {
     
    378378            ],
    379379            "time": "2018-04-26T10:06:28+00:00"
     380        },
     381        {
     382            "name": "symfony/process",
     383            "version": "v2.8.41",
     384            "source": {
     385                "type": "git",
     386                "url": "https://github.com/symfony/process.git",
     387                "reference": "713952f2ccbcc8342ecdbe1cb313d3e2da8aad28"
     388            },
     389            "dist": {
     390                "type": "zip",
     391                "url": "https://api.github.com/repos/symfony/process/zipball/713952f2ccbcc8342ecdbe1cb313d3e2da8aad28",
     392                "reference": "713952f2ccbcc8342ecdbe1cb313d3e2da8aad28",
     393                "shasum": ""
     394            },
     395            "require": {
     396                "php": ">=5.3.9"
     397            },
     398            "type": "library",
     399            "extra": {
     400                "branch-alias": {
     401                    "dev-master": "2.8-dev"
     402                }
     403            },
     404            "autoload": {
     405                "psr-4": {
     406                    "Symfony\\Component\\Process\\": ""
     407                },
     408                "exclude-from-classmap": [
     409                    "/Tests/"
     410                ]
     411            },
     412            "notification-url": "https://packagist.org/downloads/",
     413            "license": [
     414                "MIT"
     415            ],
     416            "authors": [
     417                {
     418                    "name": "Fabien Potencier",
     419                    "email": "fabien@symfony.com"
     420                },
     421                {
     422                    "name": "Symfony Community",
     423                    "homepage": "https://symfony.com/contributors"
     424                }
     425            ],
     426            "description": "Symfony Process Component",
     427            "homepage": "https://symfony.com",
     428            "time": "2018-05-15T21:17:45+00:00"
    380429        }
    381430    ],
  • _outils_/spip-cli/trunk/src/Loader/Spip.php

    r110797 r110802  
    7777        public function getcwd() {
    7878                if (
    79                         strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN'
     79                        '\\' !== DIRECTORY_SEPARATOR // Pas Windows…
    8080                        and $cwd = exec('pwd')
    8181                ) {
  • _outils_/spip-cli/trunk/src/Mutualisation/Command/Batch.php

    r110791 r110802  
    1010use Symfony\Component\Console\Input\InputInterface;
    1111use Symfony\Component\Console\Output\OutputInterface;
     12use Symfony\Component\Process\PhpExecutableFinder;
     13use Symfony\Component\Process\PhpProcess;
    1214
    1315class Batch extends Command {
     
    7678                }
    7779
    78                 if ($command) {
    79                         foreach ($hosts as $site) {
    80                                 $this->executeCommandOnSite($command, $site);
    81                         }
    82                 } else {
     80                if (!$command) {
    8381                        $io->note("Aucune commande à exécuter.");
     82                        return;
     83                }
     84
     85                if (!$this->getPhpBin()) {
     86                        $io->fail("Executable PHP non trouvé");
     87                        return;
     88                }
     89
     90                foreach ($hosts as $site) {
     91                        $this->executeCommandOnSite($command, $site);
    8492                }
    8593        }
     
    8997                $io->section($site->host);
    9098                $spip_cli_path = $this->getApplication()->getService('path.spip-cli');
    91 
    92                 $cmd = "HTTP_HOST=\"{$site->host}\" /usr/bin/env php $spip_cli_path " . $command;
    93                 // echo $cmd . "\n";
     99                $php = $this->getPhpBin();
     100                if ('\\' === DIRECTORY_SEPARATOR) {
     101                        $cmd = "set \"HTTP_HOST={$site->host}\" && $php $spip_cli_path $command";
     102                } else {
     103                        $cmd= "HTTP_HOST=\"{$site->host}\" $php $spip_cli_path " . $command;
     104                }
     105
     106                # echo $cmd . "\n";
    94107                passthru($cmd);
    95108                $io->text(["", ""]);
     109        }
     110
     111        protected function getPhpBin() {
     112                $executableFinder = new PhpExecutableFinder();
     113                return $executableFinder->find();
    96114        }
    97115
     
    187205        }
    188206
    189 
    190         function _old() {
    191 
    192                 array_shift($argv); // chemin du script
    193                 $glob = array_shift($argv);
    194                 $dir = realpath('sites');
    195 
    196                 $dirs = new GlobIterator($dir . DIRECTORY_SEPARATOR . $glob, FilesystemIterator::SKIP_DOTS);
    197                 foreach ($dirs as $d) {
    198                         if (!$d->isDir()) {
    199                                 continue;
    200                         }
    201                         $site = $d->getFilename();
    202                         echo "\n$site\n";
    203                         echo str_repeat("=", strlen($site)) . "\n";
    204                         $cmd = "HTTP_HOST=\"$site\" /usr/bin/env php " . __DIR__ . DIRECTORY_SEPARATOR . 'spip.php ' . implode(" ", $argv);
    205                         // echo $cmd . "\n";
    206                         passthru($cmd);
    207                 }
    208         }
    209207}
Note: See TracChangeset for help on using the changeset viewer.