# -*- coding: utf-8 -*-
"""
    wakatime.project
    ~~~~~~~~~~~~~~~~

    Returns a project for the given file.

    :copyright: (c) 2013 Alan Hamlett.
    :license: BSD, see LICENSE for more details.
"""

import logging

from .projects.git import Git
from .projects.mercurial import Mercurial
from .projects.projectmap import ProjectMap
from .projects.subversion import Subversion
from .projects.wakatime import WakaTime


log = logging.getLogger('WakaTime')


# List of plugin classes to find a project for the current file path.
# Project plugins will be processed with priority in the order below.
PLUGINS = [
    WakaTime,
    ProjectMap,
    Git,
    Mercurial,
    Subversion,
]


def find_project(path, configs=None):
    for plugin in PLUGINS:
        plugin_name = plugin.__name__.lower()
        plugin_configs = None
        if configs and configs.has_section(plugin_name):
            plugin_configs = dict(configs.items(plugin_name))
        project = plugin(path, configs=plugin_configs)
        if project.process():
            return project
    return None
