function run(input, parameters) {
// Get the filenames from the input
const filenames = input[0];
// Regex pattern to match duplicate file suffixes (-1, -2, -3, etc.)
const duplicatePattern = /^(.+?)(-\d+)(\.[^.]+)?$/;
// Function to extract base name from filename
function getBaseName(filename) {
const match = filename.match(duplicatePattern);
if (match) {
const baseName = match[1];
const extension = match[3] || '';
return baseName + extension;
} else {
return filename;
}
}
// Function to check if a file is a duplicate
function isDuplicate(filename) {
return duplicatePattern.test(filename);
}
// Function to group files by their base names
function groupFilesByBaseName(filenames) {
const groups = {};
filenames.forEach(filename => {
const baseName = getBaseName(filename);
if (!groups[baseName]) {
groups[baseName] = {
original: null,
duplicates: []
};
}
if (isDuplicate(filename)) {
groups[baseName].duplicates.push(filename);
} else {
groups[baseName].original = filename;
}
});
return groups;
}
// Function to identify files to delete
function getFilesToDelete(filenames) {
const groups = groupFilesByBaseName(filenames);
const filesToDelete = [];
Object.keys(groups).forEach(baseName => {
const group = groups[baseName];
if (group.original && group.duplicates.length > 0) {
filesToDelete.push(...group.duplicates);
} else if (group.duplicates.length > 1) {
filesToDelete.push(...group.duplicates.slice(1));
}
});
return filesToDelete;
}
// Get files to delete
const filesToDelete = getFilesToDelete(filenames);
// Return the result
return filesToDelete;
}