From fef97aa1dbb1086355ec0e8183acd94898aa1f69 Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 18 Aug 2021 23:12:27 +0200 Subject: [PATCH] Allow specifying `--validate` flag when displaying file info --- CMakeLists.txt | 4 ++-- application/main.cpp | 8 ++++---- cli/mainfeatures.cpp | 5 ++++- cli/mainfeatures.h | 3 ++- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d7e0a2e..9b8a422 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,8 +13,8 @@ set(META_APP_DESCRIPTION set(META_GUI_OPTIONAL true) set(META_JS_SRC_DIR renamingutility) set(META_VERSION_MAJOR 3) -set(META_VERSION_MINOR 4) -set(META_VERSION_PATCH 3) +set(META_VERSION_MINOR 5) +set(META_VERSION_PATCH 0) set(META_ADD_DEFAULT_CPP_UNIT_TEST_APPLICATION ON) # add project files diff --git a/application/main.cpp b/application/main.cpp index 401d985..7cd7790 100644 --- a/application/main.cpp +++ b/application/main.cpp @@ -164,9 +164,11 @@ int main(int argc, char *argv[]) OperationArgument printFieldNamesArg("print-field-names", '\0', "lists available field names, track attribute names and modifier"); printFieldNamesArg.setCallback(Cli::printFieldNames); // display general file info + ConfigValueArgument validateArg( + "validate", 'c', "validates the file integrity as accurately as possible; the structure of the file will be parsed completely"); OperationArgument displayFileInfoArg("info", 'i', "displays general file information", PROJECT_NAME " info -f /some/dir/*.m4a"); - displayFileInfoArg.setCallback(std::bind(Cli::displayFileInfo, _1, std::cref(filesArg), std::cref(verboseArg))); - displayFileInfoArg.setSubArguments({ &filesArg, &verboseArg }); + displayFileInfoArg.setCallback(std::bind(Cli::displayFileInfo, _1, std::cref(filesArg), std::cref(verboseArg), std::cref(validateArg))); + displayFileInfoArg.setSubArguments({ &filesArg, &validateArg, &verboseArg }); // display tag info ConfigValueArgument fieldsArg("fields", 'n', "specifies the field names to be displayed", { "title", "album", "artist", "trackpos" }); fieldsArg.setRequiredValueCount(Argument::varValueCount); @@ -197,8 +199,6 @@ int main(int argc, char *argv[]) exportArg.setSubArguments({ &filesArg, &prettyArg }); exportArg.setCallback(std::bind(Cli::exportToJson, _1, std::cref(filesArg), std::cref(prettyArg))); // file info - ConfigValueArgument validateArg( - "validate", 'c', "validates the file integrity as accurately as possible; the structure of the file will be parsed completely"); OperationArgument genInfoArg("html-info", '\0', "generates technical information about the specified file as HTML document"); genInfoArg.setSubArguments({ &fileArg, &validateArg, &outputFileArg }); genInfoArg.setCallback(std::bind(Cli::generateFileInfo, _1, std::cref(fileArg), std::cref(outputFileArg), std::cref(validateArg))); diff --git a/cli/mainfeatures.cpp b/cli/mainfeatures.cpp index 9b1f1b6..e9a2480 100644 --- a/cli/mainfeatures.cpp +++ b/cli/mainfeatures.cpp @@ -149,7 +149,7 @@ void generateFileInfo(const ArgumentOccurrence &, const Argument &inputFileArg, #endif } -void displayFileInfo(const ArgumentOccurrence &, const Argument &filesArg, const Argument &verboseArg) +void displayFileInfo(const ArgumentOccurrence &, const Argument &filesArg, const Argument &verboseArg, const Argument &validateArg) { CMD_UTILS_START_CONSOLE; @@ -165,6 +165,9 @@ void displayFileInfo(const ArgumentOccurrence &, const Argument &filesArg, const AbortableProgressFeedback progress; // FIXME: actually use the progress object try { // parse tags + if (validateArg.isPresent()) { + fileInfo.setForceFullParse(true); + } fileInfo.setPath(std::string(file)); fileInfo.open(true); fileInfo.parseContainerFormat(diag, progress); diff --git a/cli/mainfeatures.h b/cli/mainfeatures.h index 614a750..b0a4543 100644 --- a/cli/mainfeatures.h +++ b/cli/mainfeatures.h @@ -51,7 +51,8 @@ extern const char *const fieldNames; extern const char *const fieldNamesForSet; void applyGeneralConfig(const CppUtilities::Argument &timeSapnFormatArg); void printFieldNames(const CppUtilities::ArgumentOccurrence &occurrence); -void displayFileInfo(const CppUtilities::ArgumentOccurrence &, const CppUtilities::Argument &filesArg, const CppUtilities::Argument &verboseArg); +void displayFileInfo(const CppUtilities::ArgumentOccurrence &, const CppUtilities::Argument &filesArg, const CppUtilities::Argument &verboseArg, + const CppUtilities::Argument &validateArg); void generateFileInfo(const CppUtilities::ArgumentOccurrence &, const CppUtilities::Argument &inputFileArg, const CppUtilities::Argument &outputFileArg, const CppUtilities::Argument &validateArg); void displayTagInfo(const CppUtilities::Argument &fieldsArg, const CppUtilities::Argument &showUnsupportedArg, const CppUtilities::Argument &filesArg,