Uses the fetch, make, push subcommands to
        mirror Project Gutenberg to a github3 api

def upload_all_books(book_id_start, book_id_end, rdf_library=None):
    """ Uses the fetch, make, push subcommands to
        mirror Project Gutenberg to a github3 api
    """

    # TODO refactor appname into variable
    logger.info(
        "starting a gitberg mass upload: {0} -> {1}".format(
            book_id_start, book_id_end
        )
    )

    for book_id in range(int(book_id_start), int(book_id_end) + 1):
        cache = {}
        errors = 0
        try:
            if int(book_id) in missing_pgid:
                print(u'missing\t{}'.format(book_id))
                continue
            upload_book(book_id, rdf_library=rdf_library, cache=cache)
        except Exception as e:
            print(u'error\t{}'.format(book_id))
            logger.error(u"Error processing: {}\r{}".format(book_id, e))
            errors += 1
            if errors > 10:
                print('error limit reached!')
                break