google / google/python-fire

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

Ouverte
#255 1 commentaire 4 réactions 0 personnes assignées Voir sur GitHub
bug
Langage dominant
Python
Étoiles
28.2k
Forks
1.5k
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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 ;-).

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.