__author__ = u'schmatz'
import configuration
import os
import sys
import errors
import shutil
class DirectoryController(object):
    def __init__(self,config):
        assert isinstance(config,configuration.Configuration)
        self.config = config
        self.root_dir = self.config.system.get_current_working_directory()

    @property
    def root_install_directory(self):
        return self.root_dir + os.sep + "coco" + os.sep + "bin"
    @property
    def tmp_directory(self):
        return self.root_install_directory + os.sep + u"tmp"
    @property
    def bin_directory(self):
        return self.root_install_directory

    def create_directory_in_tmp(self,subdirectory):
        os.mkdir(self.generate_path_for_directory_in_tmp(subdirectory))

    def generate_path_for_directory_in_tmp(self,subdirectory):
        return self.tmp_directory + os.sep + subdirectory
    def create_directory_in_bin(self,subdirectory):
        full_path = self.bin_directory + os.sep + subdirectory
        os.mkdir(full_path)

    def create_base_directories(self):
        shutil.rmtree(self.root_dir + os.sep + "coco" + os.sep + "node_modules",ignore_errors=True) #just in case
        try:
          if os.path.exists(self.tmp_directory):
            self.remove_directories()
          os.mkdir(self.tmp_directory)
        except:
          raise errors.CoCoError(u"There was an error creating the directory structure, do you have correct permissions? Please remove all and start over.")

    def remove_directories(self):
        shutil.rmtree(self.bin_directory + os.sep + "node",ignore_errors=True)
        shutil.rmtree(self.bin_directory + os.sep + "mongo",ignore_errors=True)
    def remove_tmp_directory(self):
        shutil.rmtree(self.tmp_directory)