from os import mkdir
from os.path import expanduser, exists, join
from configparser import ConfigParser
from distutils.core import setup
from setuptools import find_packages


USER_HOME_DIR = expanduser("~")
CML_DIR_NAME = ".cml"
DEFAULT_LEARN_DIR = "data"
CONFIG_FILE_NAME = "settings.ini"
DEFAULT_TRAINING_SET = "c_toyset.csv"
KNOWLEDGE_DIR = "knowledge"

CML_CONFIG_DIR = join(USER_HOME_DIR, CML_DIR_NAME)
CML_DEFAULT_LEARN_DIR = join(CML_CONFIG_DIR, DEFAULT_LEARN_DIR)
CONFIG_FILE_PATH = join(CML_CONFIG_DIR, CONFIG_FILE_NAME)
DEFAULT_TRAINING_SET_PATH = join(CML_DEFAULT_LEARN_DIR, DEFAULT_TRAINING_SET)
KNOWLEDGE_DIR_PATH = join(CML_CONFIG_DIR, KNOWLEDGE_DIR)


def create_cml_config_dir():
    mkdir(CML_CONFIG_DIR)


def create_data_dir():
    mkdir(CML_DEFAULT_LEARN_DIR)


def insert_default_settings_into_config_file():
    config = ConfigParser()
    config.read(CONFIG_FILE_PATH)
    config["GENERAL"]["input_file"] = DEFAULT_TRAINING_SET_PATH
    config["GENERAL"]["learn_dir"] = CML_DEFAULT_LEARN_DIR
    config["GENERAL"]["knowledge_dir"] = KNOWLEDGE_DIR_PATH
    write_configs(config)


def write_configs(config):
    with open(CONFIG_FILE_PATH, 'w') as configfile:
        config.write(configfile)


if not exists(CML_CONFIG_DIR):
    create_cml_config_dir()

PACKAGES = find_packages()
setup(
    name="cml",
    version="0.1dev",
    packages=PACKAGES,
    data_files=[(CML_CONFIG_DIR, ["cml/static/settings.ini"]),
                (CML_DEFAULT_LEARN_DIR, ["cml/static/c_iris.csv"]),
                (CML_DEFAULT_LEARN_DIR, ["cml/static/c_toyset.csv"]),
                ("cml/static", ["cml/static/logging.ini"])]

)

insert_default_settings_into_config_file()