Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Mejoras de los comandos #232

@PalumboN

Description

@PalumboN

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 repl

con 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 command

Mirar el orden de la página de la wiki.

Metadata

Metadata

Assignees

No one assigned

    Labels

    EPICEpic - group of storiescomponente: consolaInterpreta los comandos de la consolagood first issueGood for newcomerspriority: mediumIssue has some importance although it is no big deal

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions