La construction d'un Clojure application avec une interface de ligne de commande?
J'ai juste commencé w/Clojure (venant de Ruby) et je voudrais créer une petite application avec une interface de ligne de commande. Comment puis-je gérer les signaux d'entrée/de sortie pour une CL?
J'ai remarqué qu'il y a un clojure.contrib.en ligne de commande, mais la documentation est mince.
- Sachez que si votre application est exécutée fréquemment, vous devrez payer le coût de démarrage de la JVM à chaque fois.
- Pas avec goutte
Vous devez vous connecter pour publier un commentaire.
Voici un exemple d'utilisation de ses
with-command-line
macro. Le code suivant définit un trivial classe avec une méthode main qui ne fait rien mais imprimer les valeurs de ses arguments de ligne de commande.Compiler la classe à l'REPL:
Exemple d'utilisation
1) l'Exécution sans arguments de ligne de commande entraînera l'aide info à afficher. L'aide d'informations peut également être affiché avec
--help
ou-h
drapeaux. Notez que l'aide de l'info est généré automatiquement à partir de votre cmdspec.2) non spécifié arguments recevoir la valeur par défaut spécifiée dans le cmdspec de liaison. Par exemple,
bar
a une valeur par défaut de2
.3) Boolean drapeaux sont identifiés par le suffixe "?" dans le cmdspec. Notez que le drapeau lui-même ne pas inclure le "?" dans le cadre de son nom.
4) notez Également que vous pouvez spécifier drapeau alias par la spécification de plusieurs symboles dans le cmdspec. Je l'ai fait avec le
boolean?
etb?
drapeaux.5) Enfin, j'ai précisé que
remaining
capturer tous les arguments restants sans flags associés.L'ancien clojure.contrib.en ligne de commande a été remplacé par des outils.cli.
https://github.com/clojure/tools.cli
outils.cli utilisé pour être appelé clargon. Ci-dessous, deux articles de blog qui donne des exemples d'utilisation d'outils.cli (simple de remplacer toute référence à clargon avec des outils.cli. Les postes ne sont pas à jour).
Cette montre quelques méthodes de façons, y compris la vieille clojure.contrib.en ligne de commande
Poste en se concentrant sur Clargon par l'auteur original
Je tiens à ajouter que vous pouvez faire
ci-dessous la
(defn -main ...)
pour le faire fonctionner en mode interprété.Longtemps après que la question a été posée, je peux vous suggérons d'utiliser
docopt
bibliothèques quand il s'agit de construire interface CLI. Il y est un pour Clojure -docopt.clj
De sorte que vous pouvez déclarer votre interface et dans le même temps - c'est incroyable et facile à faire.
Pour plus de détails, je vous recommandons de vérifier http://docopt.org/
Il y a aussi une application en ligne pour vérifier votre interface http://try.docopt.org/
Et enfin voici mon exemple comment le Clojure lib peut être utilisé.
Peut-être essayer jark.
Jark est un outil d'exécution de clojure programmes sur une persistance de la JVM. Il a quelques utilitaires de ligne de commande.
https://clojars.org/jark