From 005ac05887d14d439a50274aed3edd4ab54af34a Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 27 Sep 2012 21:04:42 -0400 Subject: [PATCH] Automatically delete obsolete artifacts from ext --- src/com/gitblit/build/Build.java | 34 ++++++++++++++++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-) diff --git a/src/com/gitblit/build/Build.java b/src/com/gitblit/build/Build.java index 316b2a6..5788b25 100644 --- a/src/com/gitblit/build/Build.java +++ b/src/com/gitblit/build/Build.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; +import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; @@ -379,6 +380,7 @@ if (targetFile.exists()) { downloads.add(targetFile); + removeObsoleteArtifacts(mo, type, targetFile.getParentFile()); continue; } String expectedSHA1 = mo.getSHA1(jar); @@ -454,9 +456,41 @@ throw new RuntimeException("Error writing to file " + targetFile, e); } downloads.add(targetFile); + + removeObsoleteArtifacts(mo, type, targetFile.getParentFile()); } return downloads; } + + private static void removeObsoleteArtifacts(final MavenObject mo, final BuildType type, File folder) { + File [] removals = folder.listFiles(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + String n = name.toLowerCase(); + String dep = mo.artifact.toLowerCase(); + if (n.startsWith(dep)) { + String suffix = "-" + mo.version; + if (type.equals(BuildType.COMPILETIME)) { + suffix += "-sources.jar"; + } else { + suffix += ".jar"; + } + if (!n.endsWith(suffix)) { + return true; + } + } + return false; + } + }); + + // delete any matches + if (removals != null) { + for (File file : removals) { + System.out.println("deleting " + file); + file.delete(); + } + } + } private static void updateDownload(float progress, File file) { updateProgress(progress, "d/l: " + file.getName()); -- Gitblit v1.9.1