Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/farias-hecdin/Cmdos
📌 Module for Nim that provides a simple way to process cli arguments and help message.
https://github.com/farias-hecdin/Cmdos
command-line nim
Last synced: about 1 month ago
JSON representation
📌 Module for Nim that provides a simple way to process cli arguments and help message.
- Host: GitHub
- URL: https://github.com/farias-hecdin/Cmdos
- Owner: farias-hecdin
- License: mit
- Created: 2024-06-20T17:21:23.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-09-13T23:10:25.000Z (4 months ago)
- Last Synced: 2024-09-14T13:35:38.112Z (4 months ago)
- Topics: command-line, nim
- Language: Nim
- Homepage:
- Size: 226 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nim - Cmdos - A simple way to process cli arguments and help messages. (Development Tools / Command-Line Interface Automation)
README
> Translate this file into your native language using `Google Translate` or a [similar service](https://immersivetranslate.com).
# Cmdos
Cmdos es un pequeño módulo para **Nim** que facilita el procesamiento de argumentos de línea de comandos y la generación automática de mensajes de ayuda.
## 🗒️ Características
### Ventajas:
* Es muy fácil de implementar.
* Permite recibir múltiples entradas para un mismo argumento.
* Provee un generador de mensajes de ayuda que se crea en tiempo de compilación.
* Permite añadir flags.### Desventajas:
* ~No permite argumentos solitarios; todos los argumentos deben recibir un valor por defecto.~
* No admite delimitadores para separar valores (por ejemplo: `-c=Red,Blue`, `-c=:Red:Blue`), solo espacios en blanco (`-a Red Blue`).
* No admite llamar un mismo argumento múltiples veces; es decir, `-c Red -c Blue` ignorará la segunda llamada del argumento.## 🗒️ Instalación
Para instalar Cmdos, sigue los siguiente pasos:
```sh
nimble install https://github.com/farias-hecdin/Cmdos.git
```## 🗒️ Uso
1. Primero, importa el módulo `pkg/Cmdos`, y el modulo `std/os` para capturar los argumentos de entrada.
```nim
import pkg/cmdos
import std/os
```2. Define tus argumentos y sus valores predeterminados. Aquí tienes un ejemplo de cómo definir un comando con varios argumentos:
```nim
# Creating a command that does not accept options
const Help = CmdosCmd(
names: @["-h", "--help"],
desc: "Displays this help screen and exit."
)# Creating a command that accepts options
const Create = CmdosCmd(
names: @["create"],
desc: "Adds a new book to the library.",
opts: @[
CmdosOpt(names: @["-t", "--title"], inputs: @["The Big Book"], desc: "The title of the book.", label: ""),
CmdosOpt(names: @["-a", "--author"], inputs: @["John Doe", "Susan Dek"], desc:"Adds a new book to the library.", label: ""),
CmdosOpt(names: @["-p", "--pages"], inputs: @["800"], desc: longText, label: ""),
CmdosOpt(names: @["-r", "--reset"], @[], longText), # Behaves as a flag if no input is given.
],
)
``````nim
const Command = Cmdos(
name: "Example",
cmds: @[
Add,
Help
],
)
```3. Procesa los argumentos y extrae los valores analizados. Aquí tienes un ejemplo de cómo hacerlo:
```nim
# Setup an example app
proc main() =
if paramCount() > 0:
case paramStr(1)
# Generate a 'help message'
of "-h", "--help":
const help = processHelp(Command)
echo help
# Process the input arguments for the 'Create' command.
of "create":
var (flags, args) = processCmd(Create)
echo flags, args
else:
echo "Invalid option."
```4. Una vez que los argumentos han sido procesados, puedes utilizarlos en tu aplicación.
```nim
# Run the app
when isMainModule:
main()
```Puedes ejecutar el ejemplo anterior de la siguiente manera:
```sh
nim c example.nim
``````sh
./example create --title "Lorem Ipsum" --author "Jane Doe" --pages 125
```Aquí esta un [ejemplo](./test/example.nim) completo que demuestra cómo usar `Cmdos`.
### Documentación
Para más detalles, visita la [documentación](docs/guides.md).
## 🛡️ Licencia
Cmdos está bajo la licencia MIT. Consulta el archivo `LICENSE` para obtener más información.