2014-01-03 10:32:13 -08:00
__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
2014-04-11 19:08:55 -07:00
def mkdir ( self , path ) :
if os . path . exists ( path ) :
print ( u " Skipping creation of " + path + " because it exists. " )
else :
os . mkdir ( path )
2014-01-03 10:32:13 -08:00
def create_directory_in_tmp ( self , subdirectory ) :
2014-04-11 19:08:55 -07:00
path = self . generate_path_for_directory_in_tmp ( subdirectory )
self . mkdir ( path )
2014-01-03 10:32:13 -08:00
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
2014-04-11 19:08:55 -07:00
self . mkdir ( full_path )
2014-01-03 10:32:13 -08:00
def create_base_directories ( self ) :
2014-01-04 17:53:41 -05:00
shutil . rmtree ( self . root_dir + os . sep + " coco " + os . sep + " node_modules " , ignore_errors = True ) #just in case
2014-01-03 10:32:13 -08:00
try :
2014-04-11 19:08:55 -07:00
if os . path . exists ( self . tmp_directory ) :
self . remove_tmp_directory ( )
os . mkdir ( self . tmp_directory )
2014-01-03 10:32:13 -08:00
except :
2014-04-11 19:08:55 -07:00
raise errors . CoCoError ( u " There was an error creating the directory structure, do you have correct permissions? Please remove all and start over. " )
2014-01-03 10:32:13 -08:00
def remove_directories ( self ) :
2014-01-04 17:53:41 -05:00
shutil . rmtree ( self . bin_directory + os . sep + " node " , ignore_errors = True )
shutil . rmtree ( self . bin_directory + os . sep + " mongo " , ignore_errors = True )
2014-01-05 14:01:19 -05:00
def remove_tmp_directory ( self ) :
shutil . rmtree ( self . tmp_directory )