Interfaces de línea de comandos (CLI)

Descripción general

Los desarrolladores de CLI prefieren Go por su portabilidad, rendimiento y facilidad de creación

Las interfaces de línea de comandos (CLI), a diferencia de las interfaces gráficas de usuario (GUI), son solo de texto. Las aplicaciones de infraestructura y nube se basan principalmente en CLI debido a su fácil automatización y capacidades remotas.

Beneficios clave

Aprovecha los tiempos de compilación rápidos para crear programas que se inicien rápidamente y se ejecuten en cualquier sistema

Los desarrolladores de CLI consideran que Go es ideal para diseñar sus aplicaciones. Go se compila muy rápidamente en un único binario, funciona en todas las plataformas con un estilo consistente y aporta una sólida comunidad de desarrollo. Desde una sola computadora portátil Windows o Mac, los desarrolladores pueden crear un programa Go para cada una de las docenas de arquitecturas y sistemas operativos que admite Go en cuestión de segundos, sin necesidad de granjas de compilación complicadas. Ningún otro lenguaje compilado puede construirse de manera tan portátil o rápida. Las aplicaciones Go están integradas en un único binario autónomo, lo que hace que la instalación de aplicaciones Go sea trivial.

Específicamente, los programas escritos en Go se ejecutan en cualquier sistema sin necesidad de bibliotecas, runtimes o dependencias existentes. Y los programas escritos en Go tienen un tiempo de inicio inmediato, similar a C o C++ pero imposible de obtener con otros lenguajes de programación.

Caso de uso

Usa Go para crear CLI elegantes

Al desarrollar CLI en Go, se utilizan ampliamente dos herramientas: Cobra y Viper.

Cobra es a la vez una biblioteca para la creación de potentes aplicaciones CLI modernas y un programa para generar aplicaciones CLI en Go. Cobra impulsa la mayoría de las aplicaciones Go populares, incluidas CoreOS, Delve, Docker, Dropbox, Git Lfs, Hugo, Kubernetes y muchos más. Con ayuda de comandos integrados, autocompletado y documentación "hace que documentar cada comando sea realmente simple", dice Alex Ellis, fundador de OpenFaaS.

Viper es una solución de configuración completa para aplicaciones Go, diseñadas para funcionar dentro de una aplicación para manejar las necesidades y formatos de configuración. Cobra y Viper están diseñados para trabajar juntos.

Viper admite estructuras anidadas en la configuración, lo que permite a los desarrolladores de CLI administrar la configuración de varias partes de una aplicación grande. Viper también proporciona todas las herramientas necesarias para crear fácilmente aplicaciones de doce factores.

“Si no quieres contaminar tu línea de comando, o si estás trabajando con datos confidenciales que no quieres que aparezcan en el historial, es una buena idea trabajar con variables de entorno. Para hacer esto, puedes usar Viper”, sugiere Geudens.

Cliente Breve introducción Proyectos usando go
Comcast Comcast Comcast Comcast usa Go como un cliente CLI que se utiliza para publicar y suscribirse a sus sitios de alto tráfico. La empresa también admite una biblioteca cliente de código abierto escrita en Go, diseñada para trabajar con Apache Pulsar.
GitHub GitHub GitHub GitHub usa Go como herramienta de línea de comandos que facilita el trabajo con GitHub, envolviendo git para extenderlo con funciones y comandos adicionales.
Hugo Hugo Hugo Hugo es una de las aplicaciones Go CLI más populares que impulsa miles de sitios, incluido este. Una de las razones de su popularidad es su facilidad de instalación gracias a Go. El autor de Hugo, Bjørn Erik Pedersen, escribe: "El binario único elimina la mayor parte del dolor de la instalación y las actualizaciones".

Comienza

Libros para crear CLI con Go

  • spf13/cobra

    Una biblioteca para crear potentes aplicaciones CLI modernas y un programa para generar aplicaciones y aplicaciones CLI en Go

  • spf13/viper

    Una solución de configuración completa para aplicaciones Go, diseñada para funcionar dentro de una aplicación para manejar las necesidades y formatos de configuración

  • urfave/cli

    Un framework mínimo para crear y organizar aplicaciones Go de línea de comandos

  • delve

    Una herramienta simple y poderosa creada para programadores acostumbrados a usar un depurador a nivel de código fuente en un lenguaje compilado.

  • chzyer/readline

    Una implementación pura en Golang que proporciona la mayoría de las funciones en GNU Readline (bajo licencia MIT)

  • dixonwille/wmenu

    Una estructura de menú fácil de usar para aplicaciones CLI que solicita a los usuarios que elijan

  • spf13/pflag

    Un reemplazo directo para el paquete flag de Go, que implementa banderas de estilo POSIX/GNU

  • golang/glog

    Registros de ejecución nivelados para Go

  • go-prompt

    Una biblioteca para crear potentes mensajes interactivos, lo que facilita la creación de herramientas de línea de comandos multiplataforma usando Go.

Ver más