Remove feature for removing backup files
Simple combination of find, xargs and rm should do the same.
This commit is contained in:
parent
229e24cbe0
commit
d69190a6e5
|
@ -185,15 +185,6 @@ int main(int argc, char *argv[])
|
|||
genInfoArg.setDenotesOperation(true);
|
||||
genInfoArg.setSubArguments({&fileArg, &validateArg, &outputFileArg});
|
||||
genInfoArg.setCallback(std::bind(Cli::generateFileInfo, _1, std::cref(fileArg), std::cref(outputFileArg), std::cref(validateArg)));
|
||||
// remove backup files
|
||||
Argument directoryArg("directory", 'd', "specifies the directory");
|
||||
directoryArg.setRequiredValueCount(1);
|
||||
directoryArg.setValueNames({"path"});
|
||||
directoryArg.setImplicit(true);
|
||||
Argument remBackupFilesArg("remove-backup-files", '\0', "removes all files with \".bak\" suffix in the given directory and in subdirectories if recursive option is present");
|
||||
remBackupFilesArg.setDenotesOperation(true);
|
||||
remBackupFilesArg.setCallback(std::bind(Cli::removeBackupFiles, _1, std::cref(recursiveArg)));
|
||||
remBackupFilesArg.setSubArguments({&directoryArg, &recursiveArg});
|
||||
// renaming utility
|
||||
Argument renamingUtilityArg("renaming-utility", '\0', "launches the renaming utility instead of the main GUI");
|
||||
renamingUtilityArg.setCombinable(true);
|
||||
|
@ -201,7 +192,7 @@ int main(int argc, char *argv[])
|
|||
qtConfigArgs.qtWidgetsGuiArg().setAbbreviation('\0');
|
||||
qtConfigArgs.qtWidgetsGuiArg().addSubArgument(&defaultFileArg);
|
||||
qtConfigArgs.qtWidgetsGuiArg().addSubArgument(&renamingUtilityArg);
|
||||
parser.setMainArguments({&qtConfigArgs.qtWidgetsGuiArg(), &printFieldNamesArg, &displayFileInfoArg, &displayTagInfoArg, &setTagInfoArgs.setTagInfoArg, &extractFieldArg, &genInfoArg, &remBackupFilesArg, &helpArg});
|
||||
parser.setMainArguments({&qtConfigArgs.qtWidgetsGuiArg(), &printFieldNamesArg, &displayFileInfoArg, &displayTagInfoArg, &setTagInfoArgs.setTagInfoArg, &extractFieldArg, &genInfoArg, &helpArg});
|
||||
// parse given arguments
|
||||
try {
|
||||
parser.parseArgs(argc, argv);
|
||||
|
|
|
@ -163,15 +163,6 @@ void printFieldNames(const ArgumentOccurance &occurance)
|
|||
cout << fieldNames << endl;
|
||||
}
|
||||
|
||||
void removeBackupFiles(const ArgumentOccurance &occurance, const Argument &recursiveArg)
|
||||
{
|
||||
CMD_UTILS_START_CONSOLE;
|
||||
QDir dir(QString::fromStdString(occurance.values.front()));
|
||||
QStringList affectedFiles;
|
||||
int filesFound = Utility::removeBackupFiles(dir, affectedFiles, &cout, recursiveArg.isPresent());
|
||||
cout << affectedFiles.size() << " of " << filesFound << " backup files have been removed." << endl;
|
||||
}
|
||||
|
||||
TagUsage parseUsageDenotation(const Argument &usageArg, TagUsage defaultUsage)
|
||||
{
|
||||
if(usageArg.isPresent()) {
|
||||
|
|
|
@ -50,7 +50,6 @@ void generateFileInfo(const ApplicationUtilities::ArgumentOccurance &, const App
|
|||
void displayTagInfo(const ApplicationUtilities::Argument &fieldsArg, const ApplicationUtilities::Argument &filesArg, const ApplicationUtilities::Argument &verboseArg);
|
||||
void setTagInfo(const Cli::SetTagInfoArgs &args);
|
||||
void extractField(const ApplicationUtilities::Argument &fieldsArg, const ApplicationUtilities::Argument &inputFileArg, const ApplicationUtilities::Argument &outputFileArg, const ApplicationUtilities::Argument &verboseArg);
|
||||
void removeBackupFiles(const ApplicationUtilities::ArgumentOccurance &occurance, const ApplicationUtilities::Argument &recursiveArg);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -109,31 +109,6 @@ TagValue qstringToTagValue(const QString &value, TagTextEncoding textEncoding)
|
|||
return value.isEmpty() ? TagValue() : TagValue(qstringToString(value, textEncoding), textEncoding);
|
||||
}
|
||||
|
||||
int removeBackupFiles(const QDir &directory, QStringList &affectedFiles, ostream *log, bool recursive)
|
||||
{
|
||||
QDirIterator iterator(directory, recursive ? QDirIterator::Subdirectories : QDirIterator::NoIteratorFlags);
|
||||
QString path;
|
||||
int filesFound = 0;
|
||||
while(iterator.hasNext()) {
|
||||
path = iterator.next();
|
||||
const auto fileInfo = iterator.fileInfo();
|
||||
if(fileInfo.isFile()) {
|
||||
if(fileInfo.suffix() == QLatin1String("bak")) {
|
||||
++filesFound;
|
||||
if(QFile::remove(path)) {
|
||||
affectedFiles << path;
|
||||
if(log) {
|
||||
*log << "\"" << path.toStdString() << "\" has been removed." << endl;
|
||||
}
|
||||
} else if(log) {
|
||||
*log << "Unable to remove \"" << path.toStdString() << "\"." << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return filesFound;
|
||||
}
|
||||
|
||||
QString formatName(const QString &str, bool underscoreToWhitespace)
|
||||
{
|
||||
QString res;
|
||||
|
|
|
@ -25,7 +25,6 @@ Media::TagValue qstringToTagValue(const QString &value, Media::TagTextEncoding t
|
|||
QString formatName(const QString &str, bool underscoreToWhitespace = true);
|
||||
QString fixUmlauts(const QString &str);
|
||||
void parseFileName(const QString &fileName, QString &title, int &trackNumber);
|
||||
int removeBackupFiles(const QDir &directory, QStringList &affectedFiles, std::ostream *log = nullptr, bool recursive = false);
|
||||
QString printModel(QAbstractItemModel *model);
|
||||
void printModelIndex(const QModelIndex &index, QString &res, int level);
|
||||
|
||||
|
|
Loading…
Reference in New Issue