Я бы использовал тип опции клика File
:
import click
import sys
@click.group()
def cli():
pass
@cli.command()
@click.option('--compose-file',
help='compose file to work with',
type=click.File('r'),
default=sys.stdin)
def secret_hash_ini(compose_file):
with compose_file:
data = compose_file.read()
print(data)
if __name__ == '__main__':
cli()
Предполагая, что у нас есть файл example.txt
, содержащий текст:
This is a test.
Затем мы можем указать файл с --compose-file
:
$ python docker-secret-helper.py secret-hash-ini --compose-file example.txt
This is a test.
Или мы можем прочитать из stdin
:
$ python docker-secret-helper.py secret-hash-ini < example.txt
This is a test.
Мы не можем сгенерировать ошибку в случае, если "Ни то, ни другое --compose-file ни stdin прошел ", потому что stdin
всегда доступен. Если мы вызываем docker-secret-helper.py
без предоставления --compose-file
и без перенаправления stdin
, он просто зависнет в ожидании ввода.