From a011fad00158677cef3b5d3b727d0061954f15ae Mon Sep 17 00:00:00 2001 From: Joey Payne Date: Wed, 27 Jan 2016 21:12:58 -0700 Subject: [PATCH] Added removal of readonly files via chmod. --- command_line.py | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/command_line.py b/command_line.py index 214b41c..6cc7851 100644 --- a/command_line.py +++ b/command_line.py @@ -659,24 +659,12 @@ class CommandBase(object): output_dir = utils.path_join(self.output_dir(), self.project_name()) if os.path.exists(output_dir): - try: - utils.rmtree(output_dir) - except OSError as e: - error = u'Failed to remove output directory: {}.'.format(output_dir) - error += '\nError recieved: {}'.format(e) - self.logger.error(error) - self.output_err += error + utils.rmtree(output_dir, onerror=self.remove_readonly) temp_dir = utils.path_join(TEMP_DIR, 'webexectemp') if os.path.exists(temp_dir): - try: - utils.rmtree(temp_dir) - except OSError as e: - error = u'Failed to remove temporary directory: {}.'.format(temp_dir) - error += '\nError recieved: {}'.format(e) - self.logger.error(error) - self.output_err += error + utils.rmtree(temp_dir, onerror=self.remove_readonly) self.progress_text = 'Making new directories...\n' @@ -817,13 +805,7 @@ class CommandBase(object): self.logger.error(error) self.output_err += error finally: - try: - utils.rmtree(temp_dir) - except OSError as e: - error = u'Failed to remove temporary directory: {}.'.format(temp_dir) - error += '\nError recieved: {}'.format(e) - self.logger.error(error) - self.output_err += error + utils.rmtree(temp_dir, onerror=self.remove_readonly) def make_desktop_file(self, nw_path, export_dest): icon_set = self.get_setting('icon') @@ -902,6 +884,16 @@ class CommandBase(object): time.sleep(2) output, err = proc.communicate() + def remove_readonly(self, action, name, exc): + try: + os.chmod(name, stat.S_IWRITE) + os.remove(name) + except Exception as e: + error = u'Failed to remove file: {}.'.format(name) + error += '\nError recieved: {}'.format(e) + self.logger.error(error) + self.output_err += error + def copy_files_to_project_folder(self): old_dir = CWD os.chdir(self.project_dir())