picocli, un poderós framework per a la creació d'aplicacions de línia d'ordres

picocli

Picocli el framework per a la creació d'apps cli

Si estàs iniciant al món de la programació i ja t'has endinsat una mica a Java, deixa'm dir-te que navegant per la xarxa m'he trobat amb una excel·lent eina que a la meva època d'estudiant m'hagués agradat conèixer, ja que aquesta eina de la qual parlarem el dia d'avui es posiciona com a framework per a la creació d'aplicacions de línia d'ordres.

L'eina de què parlarem és Picocli, la qual pretén ser la forma més fàcil d'usar per crear aplicacions de línia d'ordres enriquides que puguin executar-se dins i fora de la JVM.

Encara que no cal explicar una mica sobre el que és la interfície de línia d'ordres, per a aquells lectors que no s'han endinsat de ple a la programació o fins i tot per a aquells que només ho han fet de manera autodidacta i desconeixen encara de diversos termes, els puc dir que la línia d'ordres o millor conegut com a CLI, és un tipus d'interfície d'usuari que permet als usuaris donar instruccions a algun programa per mitjà d'una línia de text simple (cosa que fem diàriament a Linux).

Les CLI poden emprar-se interactivament, escrivint instruccions en alguna mena d'entrada de text, o poden utilitzar-se d'una forma molt més automatitzada (batch), llegint ordres des d'un fitxer de scripts.

Aquí és on entra Picocli, la qual és una biblioteca i un Framework escrit a Java, que contenen una API d'anotacions i una API programàtica.

De les característiques de Picocli, es destaca que:

  • Compte amb ajuda d'ús amb colors i estils ANSI
  • Autocompletat TAB
  • Subordres niats.
  • Admet subordres similars a git i qualsevol estil de prefix d'opció
  • Permet opcions curtes agrupades POSIX
  • Convertidors de tipus personalitzats
  • opcions de contrasenya
  • Les aplicacions de Picocli es poden compilar en un sol fitxer
  • Ser molt compactes sense codi repetitiu
  • Ve amb un processador d'anotacions que activa Graal
  • Suport per a opcions negables
  • Valors cotitzats avançats i grups d'arguments
  • Facilita el seguiment de les pautes de la interfície de línia d'ordres.
  • I més

L'interessant de Picocli és que com ja es menciono en les seves característiques és que ofereix una manera de permetre que els usuaris executin aplicacions basades en picocli sense requerir la biblioteca picocli com una dependència externa: tot el codi font viu en un sol fitxer.

S'esmenta que:

Les aplicacions basades en Picocli es poden compilar amb anticipació a una imatge nativa, amb un temps d'inici extremadament ràpid i requisits de memòria més baixos.

Sobre el funcionament de picocli, aquest inicialitza la classe des dels arguments de la línia d'ordre, convertint l'entrada en dades fortament tipades.

Picocli distingeix entre opcions amb nom i paràmetres posicionals i permet que tots dos estiguin fortament tipats. Els camps de valors múltiples poden especificar un nombre exacte de paràmetres o un rang (p. ex., 0..*, 1..2).

Admet opcions de mapa com -Dkey1=val1 -Dkey2=val2, on tant la clau com el valor es poden escriure de manera segura. La traça de l'analitzador facilita la resolució de problemes. Els fitxers d'arguments de la línia d'ordres (@-files) permeten que les aplicacions manegin línies d'ordres molt llargues.

Cal esmentar que l'autocompletat de picocli només funciona en alguns shells com Bash o Zsh, ja que no tots admeten aquesta funció.

Finalment si estàs interessat en poder conèixer més a l'respecte, Pots consultar els detalls en el següent enllaç.

Com implementar picocli?

Per als interessats en poder implementar picocli en el seu projecte o iniciar un projecte nou amb picocli, poden fer-ho descarregant la darrera versió de picocli des de el següent enllaç.

I la implementació la pot fer segons sigui el cas, per exemple a Maven

<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.7.4</version>
</dependency>

Scala SBT

libraryDependencies += "info.picocli" % "picocli" % "4.7.4"

heura

<dependency org="info.picocli" name="picocli" rev="4.7.4" />

Raïm

@Grapes(
@Grab(group='info.picocli', module='picocli', version='4.7.4')
)

Leiningen

[info.picocli/picocli "4.7.4"]

Constructor

'info.picocli:picocli:jar:4.7.4'

JBang

//DEPS info.picocli:picocli:4.7.4

La documentació així com tota la seva informació, la podeu consultar des de el següent enllaç.