#!/usr/bin/env python2

from __future__ import absolute_import, division, print_function
import argparse
from functools import partial
import sys

import nfldb

import nflfan


def log(*args, **kwargs):
    kwargs['file'] = sys.stderr
    print(*args, **kwargs)


if __name__ == '__main__':
    db = nfldb.connect()
    providers = nflfan.builtin_providers
    conf = nflfan.load_config(providers=providers)
    player_search = partial(nflfan.player_search, db)

    _, _, current_week = nfldb.current(db)

    parser = argparse.ArgumentParser(
        description='Saves your fantasy football league data for the given '
                    'week.',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    aa = parser.add_argument
    aa('-w', '--week', type=int, default=current_week,
       help='The week to update provider data for. If no week is given, '
            'then the current week is used.')
    args = parser.parse_args()
    assert 1 <= args.week <= 17

    for pname, leagues in conf['leagues'].items():
        for lg in leagues.values():
            log('Updating %s (week %d)...' % (lg.full_name, args.week), end='')
            prov = providers[lg.prov_name](lg)
            prov.save(lg.cache_path(args.week), player_search, args.week)
            log('done.')

