google / google/python-fire

Completion does not work with nested commands with 'group flags'

Abierto
#255 1 comentario 4 reacciones 0 asignados Ver en GitHub
bug
Lenguaje dominante
Python
Estrellas
28.2k
Forks
1.5k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I'm trying to create a CLI which consists of several command groups. Commands within the command group share some common flags. In my example that is e.g. the `--namespace` flag in the `sub` command group.

I got this working. However, it breaks some fire functionality like generating command completion and a proper `--help` output.

Note that I use the class object in stead of class instances for the command groups (in contrast to [the documentation](https://google.github.io/python-fire/guide/#grouping-commands)):
```python
import fire

class Sub(object):
"""Command group which has group-flags
"""

def __init__(self, namespace='default'):
self._namespace = namespace

def command(self):
"""Run as `mycli sub command`"""
print(f"Now I return {self._namespace}")

class MyCLI(object):
"""My super fancy CLI
"""
def __init__(self, verbose=False):
# It just references the class, not an instance as shown in the docs
self.sub = Sub
# ...

if __name__ == '__main__':
fire.Fire(MyCLI, name='mycli')
```

Running a command works properly (you can even rearrange the flag):
```
$ mycli sub command
Now I return default

$ mycli sub command --namespace test
Now I return test
```

However, when running `mycli -- --completion` it will just print a completion script without any actual command completions.

It seems that my use-case is either not supported, or I have implemented it quite wrong. I'm quite new to fire and python cli tools, so I suppose the latter could definitely be the case ;-).

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.