import java.io.File;
import java.time.LocalDateTime;
import java.time.Duration;
import java.util.stream.Stream;
public class ArtifactCleanup {
private static final int MAX_AGE_DAYS = 30; // Maximum age in days for artifacts
private static final String BASE_DIR = "/path/to/legacy/project"; // Replace with your project's root directory
public static void main(String[] args) {
cleanupArtifacts(BASE_DIR);
}
public static void cleanupArtifacts(String baseDir) {
File projectDir = new File(baseDir);
if (!projectDir.exists() || !projectDir.isDirectory()) {
System.err.println("Invalid project directory: " + baseDir);
return;
}
// Iterate through all files and directories within the project
Stream<File> fileStream = Stream.iterate(projectDir.listFiles())
.filter(listFiles -> listFiles != null) //handle null list
.flatMap(ifac -> java.util.Arrays.stream(ifac));
fileStream.forEach(file -> {
if (file.isFile()) {
// Check file modification timestamp
if (isArtifactOlderThanLimit(file)) {
try {
if (file.delete()) {
System.out.println("Deleted artifact: " + file.getAbsolutePath());
} else {
System.err.println("Failed to delete artifact: " + file.getAbsolutePath());
}
} catch (Exception e) {
System.err.println("Error deleting artifact " + file.getAbsolutePath() + ": " + e.getMessage());
}
}
} else if (file.isDirectory()) {
// Recursively clean up subdirectories
cleanupArtifacts(file.getAbsolutePath());
}
});
}
private static boolean isArtifactOlderThanLimit(File file) {
// Calculate the age of the file in days
LocalDateTime lastModified = LocalDateTime.ofInstant(file.lastModifiedLocally(), java.time.Zone.systemDefault());
Duration age = Duration.between(lastModified, LocalDateTime.now());
// Check if the age exceeds the maximum allowed days
return age.toDays() > MAX_AGE_DAYS;
}
}
Add your comment