Python n'est pas un très bon langage en définissant un ensemble de commandes à exécuter. Bash est. Mais Bash ne fonctionne pas naïvement sur Windows. Contexte: J'essaye de construire un ensemble de programmes - avec des relations de dépendance établies entre eux - sur mac/win/linux. Quelque chose comme macports, mais devrait fonctionner sur toutes les trois plates-formes énumérées.Syntaxe d'exécution de commande portable implémentée en Python
Cela engendre le besoin d'avoir un langage de coquille qui peut être utilisé pour définir la séquence de commande pour exécuter pour la construction/ragréage/etc .. un programme particulier, par exemple:
post-destroot {
xinstall -d ${destroot}${prefix}/share/emacs/${version}/leim
delete ${destroot}${prefix}/bin/ctags
delete ${destroot}${prefix}/share/man/man1/ctags.1
if {[variant_isset carbon]} {
global version
delete ${destroot}${prefix}/bin/emacs ${destroot}${prefix}/bin/emacs-${version}
}
}
Ce qui précède provient du emacs Portfile in macports. Notez l'utilisation de variables, de conditions, de fonctions .. en plus de spécifier une simple liste de commandes à exécuter dans cet ordre.
Bien que la syntaxe ne soit pas Python, la sémantique d'exécution réelle doit être différée vers Python en utilisant un sous-processus ou autre. En résumé, je devrais être capable de 'lancer' un tel script .. mais pour chaque commande une fonction de hook spécifiée est appelée qui exécute réellement n'importe quelle commande passée en argument. J'espère que vous avez l'idée.
Que demandez-vous ici? Des conseils sur le design? Un extrait de code? S'il vous plaît soyez plus précis. – Pinochle
Je ne demande pas d'extrait de code; mais des idées sur la façon dont un tel interpréteur de commande peut être implémenté ou réutilisé (il semble que macports utilise Tcl) –