diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2016-10-22 20:29:36 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2016-10-22 20:29:36 -0700 |
| commit | 5671a12eef744e81dd33b8314f8b55c48235071d (patch) | |
| tree | 49e38dbeb2aaa1c5a8a940ebd6e4f9e8f05959f0 | |
| parent | 4fcdf15651690673e61c30f3b3a8b393569d9144 (diff) | |
| download | vcpkg-5671a12eef744e81dd33b8314f8b55c48235071d.tar.gz vcpkg-5671a12eef744e81dd33b8314f8b55c48235071d.zip | |
[post-build-checks] Add checks about subdirectories in lib/
| -rw-r--r-- | toolsrc/src/post_build_lint.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/toolsrc/src/post_build_lint.cpp b/toolsrc/src/post_build_lint.cpp index 532b189cd..75a57edc4 100644 --- a/toolsrc/src/post_build_lint.cpp +++ b/toolsrc/src/post_build_lint.cpp @@ -36,6 +36,14 @@ namespace vcpkg std::copy_if(fs::recursive_directory_iterator(dir), fs::recursive_directory_iterator(), std::back_inserter(*output), predicate); } + template <class Pred> + std::vector<fs::path> recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate) + { + std::vector<fs::path> v; + recursive_find_matching_paths_in_dir(dir, predicate, &v); + return v; + } + void recursive_find_files_with_extension_in_dir(const fs::path& dir, const std::string& extension, std::vector<fs::path>* output) { recursive_find_matching_paths_in_dir(dir, [&extension](const fs::path& current) @@ -407,6 +415,24 @@ namespace vcpkg return lint_status::ERROR_DETECTED; } + static lint_status check_no_subdirectories(const fs::path& dir) + { + const std::vector<fs::path> subdirectories = recursive_find_matching_paths_in_dir(dir, [&](const fs::path& current) + { + return fs::is_directory(current); + }); + + if (!subdirectories.empty()) + { + System::println("Directory %s should have no subdirectories", dir.generic_string()); + System::println("The following subdirectories were found: "); + print_vector_of_files(subdirectories); + return lint_status::ERROR_DETECTED; + } + + return lint_status::SUCCESS; + } + static void operator +=(size_t& left, const lint_status& right) { left += static_cast<size_t>(right); @@ -458,6 +484,8 @@ namespace vcpkg Checks::unreachable(); } + error_count += check_no_subdirectories(paths.packages / spec.dir() / "lib"); + error_count += check_no_subdirectories(paths.packages / spec.dir() / "debug" / "lib"); const std::vector<fs::path> debug_libs = recursive_find_files_with_extension_in_dir(paths.packages / spec.dir() / "lib", ".lib"); const std::vector<fs::path> release_libs = recursive_find_files_with_extension_in_dir(paths.packages / spec.dir() / "debug" / "lib", ".lib"); |
