Skip to content

Commit a011fad

Browse files
committed
Added removal of readonly files via chmod.
1 parent b6dcfc6 commit a011fad

1 file changed

Lines changed: 13 additions & 21 deletions

File tree

command_line.py

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -659,24 +659,12 @@ def make_output_dirs(self):
659659

660660
output_dir = utils.path_join(self.output_dir(), self.project_name())
661661
if os.path.exists(output_dir):
662-
try:
663-
utils.rmtree(output_dir)
664-
except OSError as e:
665-
error = u'Failed to remove output directory: {}.'.format(output_dir)
666-
error += '\nError recieved: {}'.format(e)
667-
self.logger.error(error)
668-
self.output_err += error
662+
utils.rmtree(output_dir, onerror=self.remove_readonly)
669663

670664
temp_dir = utils.path_join(TEMP_DIR, 'webexectemp')
671665

672666
if os.path.exists(temp_dir):
673-
try:
674-
utils.rmtree(temp_dir)
675-
except OSError as e:
676-
error = u'Failed to remove temporary directory: {}.'.format(temp_dir)
677-
error += '\nError recieved: {}'.format(e)
678-
self.logger.error(error)
679-
self.output_err += error
667+
utils.rmtree(temp_dir, onerror=self.remove_readonly)
680668

681669
self.progress_text = 'Making new directories...\n'
682670

@@ -817,13 +805,7 @@ def make_output_dirs(self):
817805
self.logger.error(error)
818806
self.output_err += error
819807
finally:
820-
try:
821-
utils.rmtree(temp_dir)
822-
except OSError as e:
823-
error = u'Failed to remove temporary directory: {}.'.format(temp_dir)
824-
error += '\nError recieved: {}'.format(e)
825-
self.logger.error(error)
826-
self.output_err += error
808+
utils.rmtree(temp_dir, onerror=self.remove_readonly)
827809

828810
def make_desktop_file(self, nw_path, export_dest):
829811
icon_set = self.get_setting('icon')
@@ -902,6 +884,16 @@ def compress_nw(self, nw_path):
902884
time.sleep(2)
903885
output, err = proc.communicate()
904886

887+
def remove_readonly(self, action, name, exc):
888+
try:
889+
os.chmod(name, stat.S_IWRITE)
890+
os.remove(name)
891+
except Exception as e:
892+
error = u'Failed to remove file: {}.'.format(name)
893+
error += '\nError recieved: {}'.format(e)
894+
self.logger.error(error)
895+
self.output_err += error
896+
905897
def copy_files_to_project_folder(self):
906898
old_dir = CWD
907899
os.chdir(self.project_dir())

0 commit comments

Comments
 (0)