You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.5 KiB
58 lines
1.5 KiB
import os
|
|
import sys
|
|
import shutil
|
|
|
|
def get_next_cache_dir():
|
|
work_dir = os.getcwd()
|
|
try:
|
|
# change working directory to avoid import from local folder
|
|
# during installation process
|
|
os.chdir(os.path.dirname(sys.executable))
|
|
import comtypes.client
|
|
return comtypes.client._code_cache._find_gen_dir()
|
|
except ImportError:
|
|
return None
|
|
finally:
|
|
os.chdir(work_dir)
|
|
|
|
|
|
def _remove(directory):
|
|
shutil.rmtree(directory)
|
|
print('Removed directory "%s"' % directory)
|
|
|
|
|
|
def remove_directory(directory, silent):
|
|
if directory:
|
|
if silent:
|
|
_remove(directory)
|
|
else:
|
|
try:
|
|
confirm = raw_input('Remove comtypes cache directories? (y/n): ')
|
|
except NameError:
|
|
confirm = input('Remove comtypes cache directories? (y/n): ')
|
|
if confirm.lower() == 'y':
|
|
_remove(directory)
|
|
else:
|
|
print('Directory "%s" NOT removed' % directory)
|
|
return False
|
|
return True
|
|
|
|
|
|
if len(sys.argv) > 1 and "-y" in sys.argv[1:]:
|
|
silent = True
|
|
else:
|
|
silent = False
|
|
|
|
|
|
# First iteration may get folder with restricted rights.
|
|
# Second iteration always gets temp cache folder (writable for all).
|
|
directory = get_next_cache_dir()
|
|
removed = remove_directory(directory, silent)
|
|
|
|
if removed:
|
|
directory = get_next_cache_dir()
|
|
|
|
# do not request the second confirmation
|
|
# if the first folder was already removed
|
|
remove_directory(directory, silent=removed)
|