1

使用http://click.pocoo.org/5/

我定义了这个命令,但是,当我运行命令时,缺少的选项被正确传递(我可以看到值),但是我进入Error: no such option: --missing终端并且命令失败。

我在这里到底做错了什么?下面的代码已经删除了一些信息以使其不那么不堪重负,但逻辑是相同的。

@cli.group()
def migrator():
    """Migrator from existing HEPData System to new Version"""


@migrator.command()
@with_appcontext
@click.option('--missing', is_flag=True, help='...')
@click.option('--start', '-s', type=int, default=None, help='...')
@click.option('--end', '-e', default=None, type=int, help='...')
@click.option('--date', '-d', type=str, default=None, help='...')
def migrate(start, end, missing, date=None):
    """
    Migrates all content...
    """
    if missing:
        ids = get_missing_records()
    else:
        ids = get_all_ids_in_current_system(date)

    print("Found {} ids to load.".format(len(ids)))
    if start is not None:
        _slice = slice(int(start), end)
        ids = ids[_slice]
        print("Sliced, going to load {} records.".format(len(ids)))

    print(ids)

    load_files(ids)
4

1 回答 1

2

我发现了这个问题。与 pocoo click 无关。这是因为该get_missing_records()函数实际上是另一个 CLI 命令。该missing参数随后也被传递给该函数,并且该get_missing_records()方法显然对该参数一无所知。于是一切都解决了。

于 2016-10-17T09:04:58.287 回答