mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-01 11:50:11 -05:00
cpack.cxx: Deduplicate "Generators" section creation code
This commit is contained in:
+24
-21
@@ -5,10 +5,12 @@
|
|||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <iterator>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <type_traits>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -63,6 +65,23 @@ void cpackProgressCallback(const std::string& message, float /*unused*/)
|
|||||||
{
|
{
|
||||||
std::cout << "-- " << message << std::endl;
|
std::cout << "-- " << message << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<cmDocumentationEntry> makeGeneratorDocs(
|
||||||
|
const cmCPackGeneratorFactory& gf)
|
||||||
|
{
|
||||||
|
const auto& generators = gf.GetGeneratorsList();
|
||||||
|
|
||||||
|
std::vector<cmDocumentationEntry> docs;
|
||||||
|
docs.reserve(generators.size());
|
||||||
|
|
||||||
|
std::transform(
|
||||||
|
generators.cbegin(), generators.cend(), std::back_inserter(docs),
|
||||||
|
[](const std::decay<decltype(generators)>::type::value_type& gen) {
|
||||||
|
return cmDocumentationEntry{ gen.first, gen.second };
|
||||||
|
});
|
||||||
|
return docs;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
// this is CPack.
|
// this is CPack.
|
||||||
@@ -536,15 +555,9 @@ int main(int argc, char const* const* argv)
|
|||||||
<< std::endl);
|
<< std::endl);
|
||||||
// Print out all the valid generators
|
// Print out all the valid generators
|
||||||
cmDocumentation generatorDocs;
|
cmDocumentation generatorDocs;
|
||||||
std::vector<cmDocumentationEntry> v;
|
generatorDocs.SetSection("Generators",
|
||||||
for (auto const& g : generators.GetGeneratorsList()) {
|
makeGeneratorDocs(generators));
|
||||||
cmDocumentationEntry e;
|
std::cerr << '\n';
|
||||||
e.Name = g.first;
|
|
||||||
e.Brief = g.second;
|
|
||||||
v.push_back(std::move(e));
|
|
||||||
}
|
|
||||||
generatorDocs.SetSection("Generators", v);
|
|
||||||
std::cerr << "\n";
|
|
||||||
generatorDocs.PrintDocumentation(cmDocumentation::ListGenerators,
|
generatorDocs.PrintDocumentation(cmDocumentation::ListGenerators,
|
||||||
std::cerr);
|
std::cerr);
|
||||||
parsed = false;
|
parsed = false;
|
||||||
@@ -611,22 +624,12 @@ int main(int argc, char const* const* argv)
|
|||||||
*/
|
*/
|
||||||
if (help) {
|
if (help) {
|
||||||
// Construct and print requested documentation.
|
// Construct and print requested documentation.
|
||||||
|
|
||||||
doc.SetName("cpack");
|
doc.SetName("cpack");
|
||||||
doc.SetSection("Name", cmDocumentationName);
|
doc.SetSection("Name", cmDocumentationName);
|
||||||
doc.SetSection("Usage", cmDocumentationUsage);
|
doc.SetSection("Usage", cmDocumentationUsage);
|
||||||
doc.PrependSection("Options", cmDocumentationOptions);
|
doc.PrependSection("Options", cmDocumentationOptions);
|
||||||
|
doc.SetSection("Generators", makeGeneratorDocs(generators));
|
||||||
std::vector<cmDocumentationEntry> v;
|
return !doc.PrintRequestedDocumentation(std::cout);
|
||||||
for (auto const& g : generators.GetGeneratorsList()) {
|
|
||||||
cmDocumentationEntry e;
|
|
||||||
e.Name = g.first;
|
|
||||||
e.Brief = g.second;
|
|
||||||
v.push_back(std::move(e));
|
|
||||||
}
|
|
||||||
doc.SetSection("Generators", v);
|
|
||||||
|
|
||||||
return doc.PrintRequestedDocumentation(std::cout) ? 0 : 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmSystemTools::GetErrorOccurredFlag()) {
|
if (cmSystemTools::GetErrorOccurredFlag()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user