Lorsque vous manipulez un repository GIT en utilisant (voir en abusant (ce qui n’est pas forcément négatif)) les branches, vous pouvez régulièrement vous poser la question « dans quelle branche suis-je ? Est-ce la bonne ? »
Et c’est toujours particulièrement lourd de devoir faire un
git branch

Afin de voir toutes les branches et de trouver l’active.
Je viens cependant de tomber sur une astuce donnée par le support github.

# git branch
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1) /'
}
PS1="\$(parse_git_branch)$PS1"

Placez ceci dans ~/.bashrc ou /etc/bashrc (pour que cela soit valide pour tous les utilisateurs de la machine).
Rechargez votre console et admirez :)

dmathieu@dmathieu-ubuntu:~$ cd /home/dmathieu/projects/refstats/
(master) dmathieu@dmathieu-ubuntu:~/projects/refstats$

Lorsque vous êtes dans un repository GIT, la branche courante s’affichera.
Dans le cas contraire, rien ne s’affichera :)

CakePHP fournit de base quelques méthodes permettant de développer des applications dans le but de les exécuter avec PHP-cli, c’est à dire de les exécuter comme des scripts shell au lieu de passer par l’interface graphique.

Je ne propose pas ici un tutoriel permettant de développer ce genre de scripts. Il en existe déjà un résumant assez bien la chose sur cakebaker (en).

Après avoir développé une application, nous avons plusieurs tâches qui sont exécutées dans le script shell principal.

Cependant il peut être utile, pour diverses raisons de tests, d’analyses de bugs voir statistiques, d’exécuter les mêmes méthodes présentes dans nos tasks mais via une page web.

Il serait fortement bête de devoir faire un copier/coller de notre méthode et de la remettre dans un contrôleur. Cela ne serait pas vraiment en concordance avec le mojo du framework (« think twice, code once« ).

Supposons donc que dans votre contrôleur « admin », vous désiriez utiliser la méthode « makeTest » de la tâche « test ».
Créez une nouvelle action dans votre contrôleur.

Dans celle-ci, placez les lignes suivantes :

include(APP.'console/libs/shell.php');
vendor('shells/tasks/test');

Vous avez ici inclu dans votre action les fichiers nécessaires l’instanciation de votre tâche.

Le premier fichier contient la classe parente à celle que doit avoir votre tâche. La seconde contient votre tâche (remplacer « test » par le nom de votre tâche).

$tache = $test->makeTest();

Maintenant initialisons notre tâche :

$test = new TestTask();

Et exécutons la méthode que nous désirons pour notre tâche.

$tache = $text->makeTest();

Vous n’avez maintenant plus qu’à effectuer l’action que vous désirez avec les données que votre méthode vous renvoie.

Irish Coffee

 
Fork me on GitHub