예제 #1
0
파일: cli.py 프로젝트: r4victor/epubcheck
def main(argv=None):
    """Command line app main function.

    :param list | None argv: Overrides command options (for libuse or testing)
    """

    parser = create_parser()
    args = parser.parse_args() if argv is None else parser.parse_args(argv)

    if not os.path.exists(args.path):
        sys.exit(0)

    all_valid = True
    single = os.path.isfile(args.path)
    files = [args.path] if single else iter_files(
        args.path, exts=('epub', ), recursive=args.recursive)

    pool = ThreadPool()
    results = pool.imap_unordered(EpubCheck, files)

    metas = tablib.Dataset(headers=Checker._fields + Meta._fields)
    messages = tablib.Dataset(headers=Message._fields)

    for result in results:
        metas.append(result.checker + result.meta.flatten())
        if not result.valid:
            all_valid = False
        for message in result.messages:
            messages.append(message)
            if message.level == 'ERROR':
                print(message.short, file=sys.stderr)
            else:
                print(message.short)

    if args.csv:
        args.csv.write(
            messages.export('csv', delimiter=compat.text_type(';')).encode())
        args.csv.close()

    if args.xls:
        databook = tablib.Databook((metas, messages))
        args.xls.write(databook.xls)
        args.xls.close()

    if all_valid:
        return 0
    else:
        return 1
예제 #2
0
def test_iter_files_recursive():
    gen = utils.iter_files(join('../', TEST_DIR), ['epub'], recursive=True)
    assert len(list(gen)) == 2
예제 #3
0
def test_iter_files_no_matches():
    gen = utils.iter_files(TEST_DIR, ['noext'])
    assert len(list(gen)) == 0
예제 #4
0
def test_iter_files_flat():
    gen = utils.iter_files(TEST_DIR, ['epub'])
    assert len(list(gen)) == 2
    gen = utils.iter_files(TEST_DIR, ['EPUB'])
    assert len(list(gen)) == 2
예제 #5
0
def test_iter_files_simple():
    gen = utils.iter_files(TEST_DIR, ['py'])
    assert isinstance(gen, types.GeneratorType)
    assert len(list(gen)) == 1