summaryrefslogtreecommitdiffstats
path: root/scripts/dl_cleanup.py
diff options
context:
space:
mode:
authorMichael Pratt <mcpratt@pm.me>2022-09-19 16:39:34 -0400
committerMichael Pratt <mcpratt@pm.me>2022-09-22 16:48:36 -0400
commitda4609788ddd559d4847662231cded2ecac16549 (patch)
treec737c3a8851e057b9673a441650c7b822a37b4d2 /scripts/dl_cleanup.py
parent59db286814be3ebc1fb9d9ec580945920c2d68e7 (diff)
downloadopenwrt-da4609788ddd559d4847662231cded2ecac16549.tar.gz
openwrt-da4609788ddd559d4847662231cded2ecac16549.tar.bz2
openwrt-da4609788ddd559d4847662231cded2ecac16549.zip
scripts/dl_cleanup: add support for subdirectories
Allow comparing subdirectories exactly like files. Handle a corner case where the new subdirectory has the same tarball inside of it as the one that was downloaded before a subdirectory for that package was established. Signed-off-by: Michael Pratt <mcpratt@pm.me>
Diffstat (limited to 'scripts/dl_cleanup.py')
-rwxr-xr-xscripts/dl_cleanup.py27
1 files changed, 18 insertions, 9 deletions
diff --git a/scripts/dl_cleanup.py b/scripts/dl_cleanup.py
index f7232b78c9..b15a9bb1a7 100755
--- a/scripts/dl_cleanup.py
+++ b/scripts/dl_cleanup.py
@@ -149,15 +149,18 @@ class Entry:
self.fileext = ""
self.filenoext = ""
- for ext in extensions:
- if filename.endswith(ext):
- filename = filename[0 : 0 - len(ext)]
- self.filenoext = filename
- self.fileext = ext
- break
+ if os.path.isdir(self.getPath()):
+ self.filenoext = filename
else:
- print(self.filename, "has an unknown file-extension")
- raise EntryParseError("ext")
+ for ext in extensions:
+ if filename.endswith(ext):
+ filename = filename[0 : 0 - len(ext)]
+ self.filenoext = filename
+ self.fileext = ext
+ break
+ else:
+ print(self.filename, "has an unknown file-extension")
+ raise EntryParseError("ext")
for (regex, parseVersion) in versionRegex:
match = regex.match(filename)
if match:
@@ -184,7 +187,10 @@ class Entry:
path = self.getPath()
print("Deleting", path)
if not opt_dryrun:
- os.unlink(path)
+ if os.path.isdir(path):
+ shutil.rmtree(path)
+ else:
+ os.unlink(path)
def deleteBuildDir(self):
paths = self.getBuildPaths()
@@ -301,6 +307,9 @@ def main(argv):
lastVersion = None
versions = progmap[prog]
for version in versions:
+ if lastVersion:
+ if os.path.isdir(lastVersion.getPath()) and not os.path.isdir(version.getPath()):
+ continue
if lastVersion is None or version >= lastVersion:
lastVersion = version
if lastVersion: