From 6086ec079a31276c81decdd7b5b5daaafdeb58ca Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Thu, 9 May 2024 18:40:42 +0200 Subject: Sort yscan output, tests --- yscan.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'yscan.cpp') diff --git a/yscan.cpp b/yscan.cpp index 2299370..138b67f 100644 --- a/yscan.cpp +++ b/yscan.cpp @@ -2,9 +2,12 @@ #include "file.h" +#include #include #include +#include #include +#include #include @@ -18,24 +21,32 @@ int yscan(int argc, char* argv[]) try { std::string name {fs::current_path().stem().string()}; - std::string sources; - std::string test_sources; + std::vector sources; + std::vector test_sources; for (const auto& i: fs::directory_iterator(".")) { fs::path p{i.path().filename()}; if (is_compile_unit_source_by_extension(p)) { if (p.string().substr(0, 4) == "test") { - test_sources += " " + p.string() + "\n"; + test_sources.push_back(p.string()); } else { - sources += " " + p.string() + "\n"; + sources.push_back(p.string()); } } } - if (!test_sources.empty()) { - test_sources = fmt::format(R"( + std::sort(sources.begin(), sources.end()); + std::sort(test_sources.begin(), test_sources.end()); + + std::string sources_string{std::accumulate(sources.begin(), sources.end(), std::string{}, + [](const std::string& sum, const std::string& i){return sum + " " + i + "\n";})}; + std::string test_sources_string{std::accumulate(test_sources.begin(), test_sources.end(), std::string{}, + [](const std::string& sum, const std::string& i){return sum + " " + i + "\n";})}; + + if (!test_sources_string.empty()) { + test_sources_string = fmt::format(R"( {} {} -)", "test-"s + name, test_sources); +)", "test-"s + name, test_sources_string); } std::string contents {R"( @@ -43,7 +54,7 @@ int yscan(int argc, char* argv[]) {} {} {})"}; - contents = fmt::format(contents, name, sources, test_sources); + contents = fmt::format(contents, name, sources_string, test_sources_string); std::cout << contents << std::endl; } catch (const std::exception& ex) { std::cerr << "yscan: " << ex.what() << std::endl; -- cgit v1.2.3