ate-env CLI root command dispatch treats unknown subcommands as <id> (exiting 0), rejects global flags before <id>, and allows creating reserved subcommand names
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 57/100
Línea de trabajo
Start with cmd/ate-env/main.go, especially newRootCommand and newGuestCommand, then inspect the built-in command definitions and the matching code in internal/apiservice/server.go. Reproduce the listed command cases and check how Cobra handles flags, unknown commands, and reserved names. Done means unknown commands fail non-zero, global flags work in the shown positions, and environment creation rejects reserved command names and invalid IDs.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary & Root Cause
The CLI decides how to parse the command line from os.Args[1] alone:
- Unknown word (
list,status,get): becomes a guest command. Without a subcommand, Cobra printsManage environment listhelp and returns success. - Flag first (
--api ...):root.Findsucceeds on the root itself, so no guest command is registered.aliceis then an unknown command at root.--apiis not a root flag anyway. - Reserved name (
delete): matches the built-in, so an environment nameddeletecannot be addressed asate-env delete shell ....CreateEnvironmentdoes not reject reserved names.
Affected Code Locations
All env citations are at 40a6c63. cmd/ate-env/main.go and internal/apiservice/server.go are identical at de462e98.
cmd/ate-env/main.go:234-262:newRootCommandcmd/ate-env/main.go:254-259: inspects onlyargs[0]and, ifroot.Findfails, registersnewGuestCommand(args[0])cmd/ate-env/main.go:43-67:newGuestCommandhas noRunEand noArgs, soate-env <word>prints its help and exits 0.--apiand--atespaceare defined only as this command's persistent flags (:66-67), not on rootcmd/ate-env/main.go:249-252: built-insmanifest,create,suspend,deletecmd/ate-env/main.go:208-232:delete <id>takescobra.ExactArgs(1)internal/apiservice/server.go:116-119:CreateEnvironmentonly checks thatidis non-empty
if len(args) > 0 {
cmdName := args[0]
if _, _, err := root.Find([]string{cmdName}); err != nil {
root.AddCommand(newGuestCommand(cmdName))
}
}
Detailed Reproduction Guide
export SUBSTRATE_ENV_API=127.0.0.1:17790 # port-forward to svc/ate-env-api
ate-env list; echo "exit: $?"
ate-env status; echo "exit: $?"
ate-env get alice; echo "exit: $?"
ate-env --api 127.0.0.1:17790 alice shell 'echo hi'; echo "exit: $?"
ate-env --atespace ate-env alice read /etc/hostname; echo "exit: $?"
ate-env create delete; echo "exit: $?"
ate-env delete shell 'echo hi'; echo "exit: $?"
Expected vs. Actual Behavior
- Expected: Unknown commands fail on stderr with a non-zero exit code. Global flags work in any position.
createrejects IDs that collide with CLI subcommands (and validates the ID format). - Actual:
list,statusandget aliceprint environment help and exit 0. Flags before<id>fail withunknown command "alice" for "ate-env".create deletesucceeds, andate-env delete shell 'echo hi'fails withaccepts 1 arg(s), received 2.
Observed Output & Logs
$ kubectl set image deploy/ate-env-api -n ate-env ate-env-api=<de462e98 api image> # rollout_rc=0, pod 1/1 Running
$ ate-env(de462e98) create compat1 # EXIT: 0
$ ate-env(de462e98) compat1 shell 'echo hi-from-de462e98' # hi-from-de462e98 / EXIT: 0
$ ate-env(de462e98) delete compat1 # EXIT: 0
$ kubectl rollout undo deploy/ate-env-api -n ate-env # back to 40a6c63 image
- Lenguaje dominante
- Go
- Estrellas
- 70
- Forks
- 17
- Merge medio
- 21 h 36 min
- PR fusionados (30 d)
- 19
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de agent-substrate/env
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
agent-substrate/env#123 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 74/100
agent-substrate/env#121 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
agent-substrate/env#119 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
agent-substrate/env#118 ·
Los mantenedores suelen responder en 1 día
-
bug substrate
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
agent-substrate/env#115 ·
Los mantenedores suelen responder en 1 día
Todos los issues de agent-substrate/env
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
agent-butler-finding chore
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
jordansmall/spindrift#6318 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Eyevinn/moqlivemock#166 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
JakeChampion/lang#14091 ·
Los mantenedores suelen responder en 1 día
-
batcher: BAF send context leaks per batchPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
hyperledger/fabric-x-orderer#1409 ·
Los mantenedores suelen responder en 3 días