Je ne peux pas me faire monter à bootstrap mon script. J'utilise la version 5.9.
Vous trouverez ci-dessous mon script de test (test.drunch):
#!/usr/bin/env drush
$site = drush_sitealias_get_record('@site1');
_drush_sitealias_print_record($site);
$result=drush_invoke('core-status');
drush_print($result['output']);
while ($arg = drush_shift()) {
drush_print($arg);
}
Et j'ai les alias définis dans ~/.DRUNCH/aliases.drushrc.php (voir la fin de la poste).
Quand je cours test.drush @site1
ça ne veut pas bootstrap le script avec site1. Il a accès à l'alias car il peut émettre l'enregistrement de site. Il opère également @ Site1 comme argument. Il devrait supprimer @ Site1 de La liste d'arguments et bootstrap cela, mais ce n'est pas le cas.
Vous trouverez ci-dessous la sortie:
$aliases['site1.local'] = array (
'root' => '/Users/mark/Documents/drupal6',
'uri' => 'http://site1.local',
'#file' => '/Users/mark/.drush/aliases.drushrc.php',
);
PHP configuration : /private/etc/php.ini
Drush version : 5.9
Drush configuration :
Drush alias files : /Users/mark/.drush/aliases.drushrc.php
@site1
BTW en cours d'exécution drush @site1 status
sur la ligne de commande fonctionne bien
En outre, y a-t-il un moyen de modifier le site actuel dans un script. Quand j'utilise:
drush_invoke('use', '@site2')
$result=drush_invoke('core-status');
drush_print($result['output']);
il ne s'applique pas aux commandes de Drush suivantes, mais la prochaine fois que vous exécutez le script.
aliases.drustrc.php:
$aliases['site1'] = array(
'root' => '/Users/mark/Documents/drupal6',
'uri' => 'http://site1.local',
'db-url' => 'mysql://user:[email protected]/site1'
);
$aliases['site2']=array(
'root'=>'/Users/mark/Documents/drupal7',
'uri'=>'http://site2.local',
'db-url'=>'mysql://user:[email protected]/site2'
);
Les scripts shell de poutres tels que celui que vous affichez ci-dessus ne sont pas automatiquement bootstrap à tout argument qui leur est transmis. (( modifier: Cela est dû à un bogue.) Vous avez quelques options.
1: Forcer la bootstrap: $site = drush_shift(); drush_bootstrap_max_to_sitealias($site); drush_invoke('core-status');
2: Faites tout votre travail dans un sous-groupe: $values = drush_invoke_process($site, 'core-status');
Ces deux devraient vous aider à démarrer. Notez que l'option numéro deux sera re-bootstrap Drupal dans un sous-vase isolé chaque fois que vous appelez drush_invoke_process. Drush_invoke fonctionne toujours sur le site actuellement bootstrapped et vous pouvez uniquement bootstrap une fois. Par conséquent, que drush_invoke('use', ...)
astuce ne fonctionne pas. "Utiliser" est uniquement destiné à être utilisé dans la coquille, pas dans les scripts.
Il y a une autre erreur ci-dessus. Ce code ne fonctionne pas comme vous vous attendez à ce que ce soit:
$result=drush_invoke('core-status');
drush_print($result['output']);
Ce qui se passe vraiment ici est que drush_invoke imprime la sortie du statut de TRUCH à STDOUT, et Drush_Print n'imprime rien. Vous obtiendrez $ Résultat ["sortie"] si vous utilisez drush_invoke_process.
Dans mon opinion quelque peu biaisée, le chapitre de la poitrine du guide définitif de Drupal 7 couvre assez bien ces sujets. Il est disponible à télécharger en tant que chapitre d'échantillon gratuit à http: // DéfiniitéRupal.org/book/26-DRUNT