-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Acabo de crear esta página de la wiki describiendo los comandos, lo que me hizo pasar por todos ellos y tengo algunas propuestas (se pueden crear sub-issues si quieren):
Unificación de parámetros
Ahora tenemos
.option('-p, --project <path>', 'path to project', process.cwd()) // en run
.option('-p, --project [project]', 'path to project', process.cwd()) // en test
.option('-p, --project [filter]', 'path to project', process.cwd()) // en replcon todos los parámetros definidos de distinta forma 👎
Esto es un problema por 2 cosas:
[] vs <>
Definir el parámetro con <> los hace obligatorio, mientras que con [] son opcionales.
Esto hace que la CLI actúa distinto entre un program y un REPL por ejemplo
➜ example git:(master) ✗ wollok run programExample.example -p
error: option '-p, --project <path>' argument missing
➜ example git:(master) ✗ wollok repl -p
🖥️ Initializing Wollok REPL on true
💥 Uh-oh... Unexpected Error!
The "path" argument must be of type string. Received type boolean (true)Nombre de la option vs nombre del parámetro
Si el help te tira --project [project] no te dice mucho de lo que tenés que enviar (el path? la folder?). Acá lo dice la descripción, y está bueno que lo diga, pero para mí es mejor decir "el tipo" de cosa que se espera.
Dejarlo a la deriva puede terminar en --project [filter] lo cual es confuso (qué significa filter ahí?) e incorrecto (espera un path).
Hay que revisar el resto, pero para mí en este caso debería ser siempre -p, --project <path>.
Otros ejemplos de estos son:
.option('-f, --file [file]', 'path to file relative to the project', '')
.option('-d, --describe [describe]', 'describe to run', '')
.option('-t, --test [test]', 'test to run', '')Para mí todos deberían decir [path] o [name] o [pattern] o [fqn], ahora no me queda claro qué mandar en cada caso (excepto por el primero).
Y algo relativo a eso es
.option('-e, --entityFQN [entity]', 'entity (use the fully qualified name or leave it blank in order to use the whole project)', undefined)Para mí debería ser --entity [fqn]
Path vs Folders
Hay algunas veces que se pide el path y otras una folder (que es relativa al path del proyecto). Yo intentaría unificaar todo en paths, que es lo más normal para una CLI.
Hay que revisar --natives y --assets.
Doble negaciones
Cambiaría estás por el positivo con un default opuesto:
.option('-t, --noTest', 'avoids creating a test file', false)
.option('-c, --noCI', 'avoids creating a file for CI', false)
.option('--noGit', 'avoids initializing a git repository', false)Orden de los comandos
El --help (o default) lista los comandos en el orden que fueron definidos.
A mí no me gusta el actual:
➜ example git:(master) ✗ wollok
Usage: wollok [options] [command]
Wollok Language command line interpreter tool
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
run [options] <program> Run a Wollok program
test [options] [filter] Run Wollok tests
repl [options] [file] Start Wollok interactive console
init [options] [folder] Create a new Wollok project
lint [options] Validate Wollok code
ast [options] Show abstract syntax tree
dependencies Manage dependencies for a Wollok project
help [command] display help for commandMirar el orden de la página de la wiki.