Flask-скрипт добавляет команду и опцию

Я хочу иметь логический флаг и опцию, в которой n аргументов для моей команды. Требуемый пример использования:

python manage.py my_command --all # Execute my_command with all id's

python manage.py my_command --ids id1 id2 id3 ... # Execute my_command with n ids

python manage.py my_command --all --ids id1 id2 id3 ... # Throw an error

Моя функция выглядит следующим образом (тело функции также имеет логику для выдачи ошибки, если оба предусмотрены):

@my_command_manager.option("--all", dest="all_ids", default=False, help="Execute for all ids.")
@my_command_manager.option("--ids", dest="ids", nargs="*", help="The ids to execute.")
def my_command(ids, all_ids=False): #do stuff

Это работает для опции --ids, но опция --all говорит: error: argument --all: expected one argument,

TLDR: Как я могу иметь и опцию и команду?

1 ответ

Решение

Пытаться action='store_true',

Пример:

from flask import Flask
from flask.ext.script import Manager

app = Flask(__name__)
my_command_manager = Manager(app)

@my_command_manager.option(
    "--all",
    dest="all_ids",
    action="store_true",
    help="Execute for all ids.")
@my_command_manager.option(
    "--ids",
    dest="ids",
    nargs="*",
    help="The ids to execute.")
def my_command(ids, all_ids):
    print(ids, all_ids)


if __name__ == "__main__":
    my_command_manager.run()
Другие вопросы по тегам