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

    Config file parser.

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


from __future__ import print_function

import os
import traceback

from .compat import open
from .constants import CONFIG_FILE_PARSE_ERROR


try:
    import configparser
except ImportError:
    from .packages import configparser


def parseConfigFile(configFile=None):
    """Returns a configparser.SafeConfigParser instance with configs
    read from the config file. Default location of the config file is
    at ~/.wakatime.cfg.
    """

    # get config file location from ENV
    home = os.environ.get('WAKATIME_HOME')
    if not configFile and home:
        configFile = os.path.join(os.path.expanduser(home), '.wakatime.cfg')

    # use default config file location
    if not configFile:
        configFile = os.path.join(os.path.expanduser('~'), '.wakatime.cfg')

    configs = configparser.ConfigParser(delimiters=('='), strict=False)
    try:
        with open(configFile, 'r', encoding='utf-8') as fh:
            try:
                configs.read_file(fh)
            except configparser.Error:
                print(traceback.format_exc())
                raise SystemExit(CONFIG_FILE_PARSE_ERROR)
    except IOError:
        pass
    return configs