From 1c739ae79a0f96f5f9e28f49dae9343d69be7a3d Mon Sep 17 00:00:00 2001 From: Milot Mirdita Date: Wed, 20 Jul 2022 21:19:15 +0900 Subject: [PATCH] Add easy parsable tsv output to databases --- src/commons/Parameters.cpp | 1 + src/workflow/Databases.cpp | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/commons/Parameters.cpp b/src/commons/Parameters.cpp index db9af883b..67c3e4949 100644 --- a/src/commons/Parameters.cpp +++ b/src/commons/Parameters.cpp @@ -1303,6 +1303,7 @@ Parameters::Parameters(): databases.push_back(&PARAM_HELP); databases.push_back(&PARAM_HELP_LONG); + databases.push_back(&PARAM_TSV); databases.push_back(&PARAM_REUSELATEST); databases.push_back(&PARAM_REMOVE_TMP_FILES); databases.push_back(&PARAM_COMPRESSED); diff --git a/src/workflow/Databases.cpp b/src/workflow/Databases.cpp index b03e47282..6f6176e92 100644 --- a/src/workflow/Databases.cpp +++ b/src/workflow/Databases.cpp @@ -234,6 +234,22 @@ std::string listDatabases(const Command &command, std::vector return description; } +std::string listDatabasesTsv(std::vector &downloads) { + std::string description; + description.reserve(1024); + for (size_t i = 0; i < downloads.size(); ++i) { + description.append(downloads[i].name); + description.append(1, '\t'); + description.append(Parameters::getDbTypeName(downloads[i].dbType)); + description.append(1, '\t'); + description.append(downloads[i].hasTaxonomy ? "true" : "false"); + description.append(1, '\t'); + description.append(downloads[i].url); + description.append(1, '\n'); + } + return description; +} + int databases(int argc, const char **argv, const Command &command) { Parameters &par = Parameters::getInstance(); par.parseParameters(argc, argv, command, false, Parameters::PARSE_ALLOW_EMPTY, 0); @@ -244,7 +260,11 @@ int databases(int argc, const char **argv, const Command &command) { } std::string description = listDatabases(command, usedDownloads, par.help); if (par.filenames.size() == 0 || par.help) { - par.printUsageMessage(command, par.help ? MMseqsParameter::COMMAND_EXPERT : 0, description.c_str()); + if (par.tsvOut) { + Debug(Debug::INFO) << listDatabasesTsv(usedDownloads); + } else { + par.printUsageMessage(command, par.help ? MMseqsParameter::COMMAND_EXPERT : 0, description.c_str()); + } EXIT(EXIT_SUCCESS); }