mirror of https://gitlab.com/basile.b/dexed.git
87 lines
1.7 KiB
D
87 lines
1.7 KiB
D
module cleaner;
|
|
|
|
import std.stdio;
|
|
import std.path;
|
|
import std.file;
|
|
import std.getopt;
|
|
import std.array;
|
|
|
|
/*
|
|
|
|
as a runnable, input query line:
|
|
|
|
-e ".ext1,.ext2" -f "file.ext,file.ext" -p "rootPath" -r
|
|
|
|
or as a post-build process, parameter list:
|
|
|
|
-e
|
|
".ext1,.ext2"
|
|
-f
|
|
"file.ext,file.ext"
|
|
-p
|
|
"rootPath"
|
|
-r
|
|
|
|
*/
|
|
void main(string args[])
|
|
{
|
|
bool recursive;
|
|
string path;
|
|
string userexts;
|
|
string userfiles;
|
|
string exts[];
|
|
string files[];
|
|
|
|
exts ~= [".obj", ".o"];
|
|
|
|
getopt(args, config.passThrough,
|
|
"e|ext", &userexts,
|
|
"f|files", &userfiles,
|
|
"p|path", &path,
|
|
"r|recursive", &recursive
|
|
);
|
|
|
|
if (!exists(path) || path.length == 0)
|
|
return;
|
|
|
|
if (userexts.length != 0)
|
|
{
|
|
auto itms = split(userexts, ',');
|
|
foreach(itm; itms)
|
|
if (itm.length > 1 && itm[0] == '.')
|
|
exts ~= itm;
|
|
}
|
|
|
|
if (userfiles.length != 0)
|
|
{
|
|
auto itms = split(userfiles, ',');
|
|
foreach(itm; itms)
|
|
if (itm.length > 0)
|
|
files ~= itm;
|
|
}
|
|
|
|
void clean(in string currroot)
|
|
{
|
|
DirIterator entries = dirEntries(currroot, SpanMode.shallow);
|
|
|
|
foreach(entry; entries)
|
|
{
|
|
scope(failure){}
|
|
|
|
if (!isDir(entry))
|
|
{
|
|
foreach(trg_ext; exts)
|
|
if (entry.extension == trg_ext)
|
|
std.file.remove(entry);
|
|
foreach(trg_file; files)
|
|
if (entry.name == trg_file)
|
|
std.file.remove(entry);
|
|
|
|
}
|
|
else if (recursive)
|
|
clean(entry);
|
|
}
|
|
}
|
|
clean(path);
|
|
}
|