#!/usr/bin/python3

from os import listdir, makedirs
from os.path import isfile, isdir, join, dirname
from shutil import copy2, copytree, rmtree

from ansible.plugins.action import ActionBase
from risotto.utils import RISOTTO_CONFIG




class ActionModule(ActionBase):
    def run(self, tmp=None, task_vars=None):
        super(ActionModule, self).run(tmp, task_vars)
        module_args = self._task.args.copy()
        modules = module_args['modules']
        copy_tests = module_args.get('copy_tests', False)
        dataset_directories = RISOTTO_CONFIG['directories']['datasets']
        install_dir = join('/tmp/risotto/images')
        if isdir(install_dir):
            rmtree(install_dir)
        if copy_tests:
            install_tests_dir = join('/tmp/risotto/tests')
            if isdir(install_tests_dir):
                rmtree(install_tests_dir)
        for module_name, depends in modules.items():
            for dataset_directory in dataset_directories:
                for depend in depends:
                    if copy_tests:
                        tests_dir = join(dataset_directory, depend, 'tests')
                        if isdir(tests_dir):
                            for filename in listdir(tests_dir):
                                src_file = join(tests_dir, filename)
                                dst_file = join(install_tests_dir, module_name, filename)
                                copy(src_file, dst_file)
#                    manual = join(dataset_directory, depend, 'manual', 'image')
#                    if not isdir(manual):
#                        continue
#                    for filename in listdir(manual):
#                        src_file = join(manual, filename)
#                        dst_file = join(install_dir, module_name, filename)
#                        copy(src_file, dst_file)
        return dict(ansible_facts=dict({}))