From 760aee0c8f5d1be3a8063522f1decf9e390df2a9 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Thu, 13 Feb 2020 21:12:28 +0100 Subject: [PATCH] Added a function to clean out old project files no longer needed --- nw/project/project.py | 6 ++++++ nw/tools/__init__.py | 2 ++ nw/tools/legacy.py | 47 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 nw/tools/legacy.py diff --git a/nw/project/project.py b/nw/project/project.py index 60cdfa72..03aacf42 100644 --- a/nw/project/project.py +++ b/nw/project/project.py @@ -22,6 +22,7 @@ from time import time from nw.project.status import NWStatus from nw.project.item import NWItem +from nw.tools import projectMaintenance from nw.common import checkString, checkBool, checkInt from nw.constants import ( nwFiles, nwConst, nwItemType, nwItemClass, nwItemLayout, nwAlert @@ -200,6 +201,11 @@ class NWProject(): if not self._checkFolder(self.projMeta): return + try: + projectMaintenance(self) + except Exception as E: + logger.error(str(E)) + try: nwXML = etree.parse(fileName) except Exception as e: diff --git a/nw/tools/__init__.py b/nw/tools/__init__.py index 582d18fb..71f6b141 100644 --- a/nw/tools/__init__.py +++ b/nw/tools/__init__.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from nw.tools.analyse import TextAnalysis +from nw.tools.legacy import projectMaintenance from nw.tools.optlaststate import OptLastState from nw.tools.spellcheck import NWSpellCheck from nw.tools.spellenchant import NWSpellEnchant @@ -10,6 +11,7 @@ from nw.tools.wordcount import countWords __all__ = [ "TextAnalysis", + "projectMaintenance", "OptLastState", "NWSpellCheck", "NWSpellEnchant", diff --git a/nw/tools/legacy.py b/nw/tools/legacy.py new file mode 100644 index 00000000..7b622cb6 --- /dev/null +++ b/nw/tools/legacy.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +"""novelWriter Legacy Tools + + novelWriter – Legacy Tools +============================ + Various functions to handle old projects + + File History: + Created: 2020-02-13 [0.4.3] + +""" + +import logging +import nw + +from os import path, unlink, rmdir + +logger = logging.getLogger(__name__) + +def projectMaintenance(theProject): + """Wrapper class for handling various tasks related to managing old + projects with content from older versions of novelWriter. + """ + + # Remove no longer used project cache folder + if path.isdir(theProject.projPath): + cacheDir = path.join(theProject.projPath, "cache") + if path.isdir(cacheDir): + logger.info("Deprecated cache folder found") + rmList = [] + for i in range(10): + rmList.append(path.join(cacheDir, "nwProject.nwx.%d" % i)) + rmList.append(path.join(cacheDir, "projCount.txt")) + for rmFile in rmList: + if path.isfile(rmFile): + logger.info("Deleting: %s" % rmFile) + try: + unlink(rmFile) + except Exception as e: + logger.error(str(e)) + logger.info("Deleting: %s" % cacheDir) + try: + rmdir(cacheDir) + except Exception as e: + logger.error(str(e)) + + return