2009-08-07 3 views
8

Esiste una libreria getopts standard o consigliata per Groovy che consentirà di elaborare rapidamente lunghe e brevi discussioni sulla riga di comando in Groovy?GetOpts for Groovy?

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

risposta

15

Si potrebbe anche semplicemente usare Groovy CliBuilder (che usa internamente Apache Commons Cli).

troverete un buon esempio di come funziona qui =>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

Uno dei maggiori punti di forza di Groovy è l'interoperabilità con Java. Pertanto, quando cerco librerie da usare in Groovy, il mio primo istinto è cercare le librerie Java esistenti.

Args4j è una libreria concisa ed elegante per l'analisi delle opzioni della riga di comando e funziona perfettamente con le classi di Groovy. Ho riscritto alcune parti di tutorial per funzionare con Groovy.

Si consideri la seguente classe Groovy:

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) 
     } 
} 

compilarlo con:

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

ed eseguirlo con

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 

Per ottenere l'output

Business-Logic 
-name: sample 
1

C'era una volta ho scritto il Groovy Option Parser per eseguire questa operazione. È piuttosto semplice e ha alcune sottigliezze.