getoptsargs: una alternativa minimalista a clap para herramientas Unix en Rust

Fuentes: An old-new take on argument parsing in Rust

getoptsargs es una pequeña biblioteca de Rust, publicada a finales de 2025, que extiende el veterano crate getopts —el mismo que utiliza el propio compilador rustc— para ofrecer un framework minimalista y de estilo Unix destinado al parseo de argumentos en herramientas de línea de comandos. Su autor, el ingeniero Julio Merino, la concibió originalmente como libapp dentro del proyecto EndBOX, donde necesitaba homogeneizar varios servicios de sistema integrados con el ecosistema de utilidades Unix de NetBSD, y decidió limpiarla y liberarla después.

El artículo explica por qué considera insuficientes las alternativas más extendidas, en especial clap y, en menor medida, argh. Aunque reconoce su potencia declarativa, critica que produzcan interfaces visuales y flujos de control ajenos a la tradición Unix, con colores, macros derivadas y una lógica de parseo que el desarrollador debe orquestar manualmente en main(). Esa separación facilita errores como parsear primero archivos de configuración antes que los argumentos, lo que puede romper el comportamiento de --help.

Frente a eso, getoptsargs adopta un enfoque integral: un Builder para registrar metadatos de la aplicación, opciones y argumentos posicionales con restricciones de cardinalidad; un tipo Matches que reúne opciones y argumentos ya validados; y la macro app!, que actúa como andamiaje del punto de entrada delegando en dos funciones. La API mantiene nombres crípticos heredados de getopts a propósito, para preservar la coherencia con su referente.

El texto se dirige a desarrolladores de Rust que escriben CLIs y prefieren herramientas de línea de comandos que se integren con el entorno Unix clásico, sin renunciar a la validación automática de argumentos posicionales y a la generación de secciones diferenciadas en la ayuda.