From 814ed68ffbce21e62c9023dc7c17fc530e3038c1 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sun, 26 Mar 2017 10:29:58 +0100 Subject: [PATCH] Call MetadataList::Save() in WriteMinimalList Don't reimplement the same logic. --- src/api/api_database.cpp | 27 +++++------------ src/api/metadata_list.cpp | 30 ++++++++++++------- .../api/interface/database_interface_test.h | 4 +-- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/src/api/api_database.cpp b/src/api/api_database.cpp index 9472bdf3..726f30c1 100644 --- a/src/api/api_database.cpp +++ b/src/api/api_database.cpp @@ -214,26 +214,15 @@ void ApiDatabase::WriteMinimalList(const std::string& outputFile, const bool ove if (boost::filesystem::exists(outputFile) && !overwrite) throw FileAccessError("Output file exists but overwrite is not set to true."); - Masterlist temp = masterlist_; - std::unordered_set minimalPlugins; - for (const auto &plugin : temp.Plugins()) { - PluginMetadata p(plugin.GetName()); - p.SetTags(plugin.GetTags()); - p.SetDirtyInfo(plugin.GetDirtyInfo()); - minimalPlugins.insert(p); + MetadataList minimalList; + for (const auto& plugin : masterlist_.Plugins()) { + PluginMetadata minimalPlugin(plugin.GetName()); + minimalPlugin.SetTags(plugin.GetTags()); + minimalPlugin.SetDirtyInfo(plugin.GetDirtyInfo()); + + minimalList.AddPlugin(minimalPlugin); } - YAML::Emitter yout; - yout.SetIndent(2); - yout << YAML::BeginMap - << YAML::Key << "plugins" << YAML::Value << minimalPlugins - << YAML::EndMap; - - boost::filesystem::path p(outputFile); - boost::filesystem::ofstream out(p); - if (out.fail()) - throw FileAccessError("Couldn't open output file."); - out << yout.c_str(); - out.close(); + minimalList.Save(outputFile); } } diff --git a/src/api/metadata_list.cpp b/src/api/metadata_list.cpp index 5212f4dd..fa0e700d 100644 --- a/src/api/metadata_list.cpp +++ b/src/api/metadata_list.cpp @@ -69,20 +69,28 @@ void MetadataList::Load(const boost::filesystem::path& filepath) { void MetadataList::Save(const boost::filesystem::path& filepath) const { BOOST_LOG_TRIVIAL(trace) << "Saving metadata list to: " << filepath; - YAML::Emitter yout; - yout.SetIndent(2); - yout << YAML::BeginMap - << YAML::Key << "bash_tags" << YAML::Value << bashTags_ - << YAML::Key << "globals" << YAML::Value << messages_ - << YAML::Key << "plugins" << YAML::Value << Plugins() - << YAML::EndMap; + YAML::Emitter emitter; + emitter.SetIndent(2); + emitter << YAML::BeginMap; - boost::filesystem::ofstream uout(filepath); - if (uout.fail()) + if (!bashTags_.empty()) + emitter << YAML::Key << "bash_tags" << YAML::Value << bashTags_; + + if (!messages_.empty()) + emitter << YAML::Key << "globals" << YAML::Value << messages_; + + auto plugins = Plugins(); + if (!plugins.empty()) + emitter << YAML::Key << "plugins" << YAML::Value << plugins; + + emitter << YAML::EndMap; + + boost::filesystem::ofstream out(filepath); + if (out.fail()) throw FileAccessError("Couldn't open output file."); - uout << yout.c_str(); - uout.close(); + out << emitter.c_str(); + out.close(); } void MetadataList::Clear() { diff --git a/src/tests/api/interface/database_interface_test.h b/src/tests/api/interface/database_interface_test.h index 0e8b4695..468a6ac6 100644 --- a/src/tests/api/interface/database_interface_test.h +++ b/src/tests/api/interface/database_interface_test.h @@ -220,9 +220,7 @@ TEST_P(DatabaseInterfaceTest, writeUserMetadataShouldShouldNotWriteMasterlistMet EXPECT_NO_THROW(db_->WriteUserMetadata(minimalOutputPath_.string(), true)); - std::string expectedContent = "bash_tags:\n []\nglobals:\n []\nplugins:\n []"; - - EXPECT_EQ(expectedContent, GetFileContent(minimalOutputPath_)); + EXPECT_EQ("{}", GetFileContent(minimalOutputPath_)); } TEST_P(DatabaseInterfaceTest, writeUserMetadataShouldShouldWriteUserMetadata) {