2009-08-07 5 views
8

Existe-t-il une bibliothèque getopts standard ou recommandée pour Groovy qui me permettra de traiter rapidement les arguments de ligne de commande longs et courts dans Groovy?GetOpts pour Groovy?

foo.groovy groovy --fname = foo.txt --output = foo.html --verbose

Répondre

15

Vous pouvez également utiliser simplement Groovy CliBuilder (qui utilise en interne Apache Commons Cli).

Vous trouverez un bon exemple de la façon dont cela fonctionne ici =>http://www.reverttoconsole.com/blog/codesnippets/groovy-clibuilder-in-practice/

def cli = new CliBuilder() 
cli.with { 
    usage: 'Self' 
    h longOpt:'help', 'usage information' 
    i longOpt:'input', 'input file', args:1 
    o longOpt:'output', 'output file',args:1 
    a longOpt:'action', 'action to invoke',args:1 
    d longOpt:'directory','process all files of directory', args:1 
} 
def opt = cli.parse(args) 
def action 
if(args.length == 0) { 
    cli.usage() 
    return 
} 
if(opt.h) { 
    cli.usage() 
    return 
} 
if(opt.i) { 
input = opt.i 
} 
... 
3

L'un des atouts majeurs de Groovy est l'interopérabilité avec Java. Par conséquent, lorsque je cherche des bibliothèques à utiliser dans Groovy, mon premier instinct est de rechercher des bibliothèques Java existantes.

Args4j est une bibliothèque concise et élégante pour analyser les options de ligne de commande et elle fonctionne parfaitement avec les classes Groovy. J'ai réécrit des parties du tutorial pour travailler avec Groovy.

Tenir compte de la classe Groovy suivante:

import org.kohsuke.args4j.Option; 

class Business { 

     @Option(name="-name",usage="Sets a name") 
     String name 

     public void run() { 

       println("Business-Logic") 
       println("-name: " + name) 
     } 
} 

avec Compile:

groovyc -classpath .:args4j-2.0.12/args4j-2.0.12.jar Business.groovy 

et l'exécuter avec

java -cp .:args4j-2.0.12/args4j-2.0.12.jar:/usr/share/java/groovy/embeddable/groovy-all-1.6.4.jar -Dmainclass=Business org.kohsuke.args4j.Starter -name sample 

Pour obtenir la sortie

Business-Logic 
-name: sample 
1

une fois j'ai écrit le Groovy Option Parser pour accomplir cette tâche. C'est assez simple et a quelques subtilités.