2010-11-19 47 views
1

D'abord, je suis désolé, mais c'est une sorte de question "Donnez-moi le codez". Je promets d'apprendre de vos réponses, cependant! Cela signifie que vous pouvez utiliser le Socratic method si vous le jugez nécessaire.Comment créer une commande d'alias qui change la variable d'environnement avant d'exécuter une commande réelle


Je développe actuellement (à la fois l'entretien et la construction de nouveaux) plusieurs sites en utilisant Grails et la façon dont il fonctionne est qu'il fournit un shell de ligne de commande pour l'exécution de diverses tâches.

Tout va bien, mais passer d'une version à l'autre est un peu gênant, car tout est contrôlé par une variable d'environnement unique appelée GRAILS_HOME qui est définie pour pointer vers un répertoire tel que C:\grails\grails-1.2.3\.

Maintenant, ce que je voudrais être en mesure de le faire au lieu de faire quelque chose comme ceci:

grails create-app MyWebApp 
grails list-plugins -repository=myPluginRepo 
grails install-plugin myPlugin 

puis remarquant que j'utilise la mauvaise version et que je dois revenir, je « d plutôt faire

g135 create-app MyWebApp 
g135 list-plugins -repository=myPluginRepo 
g135 install-plugin myPlugin 

qui immédiatement me dire que je suis en utilisant Grails 1.3.5. Le problème que j'ai en créant un script psh comme ceci est que je crains absolument de créer des scripts. J'ai essayé de le faire mais après environ cinq messages d'erreur mystérieux de psh, j'ai décidé de demander conseil.

points de bonus: Si je peux paramétrer l'appel d'alias pour spécifier la version (quelque chose comme g[1.3.5] other params), puis ajoutez le numéro à l'environnement valeur de la variable, qui serait la solution la plus pratique pour moi.

Répondre

4

Cela devrait le faire:

Function PSGrails($ver) 
    { 
    $env:GRAILS_HOME='c:\grails\grails-{0}\' -f $ver 
    grails $args 
    } 

Il est juste une courte fonction qui définit la variable et exécute ensuite Grails comme ci-dessus.

Exécuter en spécifiant le numéro de version directement après le nom de la fonction:

psgrails 1.3.5 create-app MyWebApp  
psgrails 1.3.5 list-plugins -repository=myPluginRepo  
psgrails 1.3.5 install-plugin myPlugin 
+0

Je pense que vous avez probablement besoin de splat @args au lieu de passer comme args $ si – Jaykul