diff options
Diffstat (limited to 'toolsrc/include')
| -rw-r--r-- | toolsrc/include/Paragraphs.h | 8 | ||||
| -rw-r--r-- | toolsrc/include/PostBuildLint_BuildInfo.h | 2 | ||||
| -rw-r--r-- | toolsrc/include/vcpkg_Files.h | 57 | ||||
| -rw-r--r-- | toolsrc/include/vcpkg_Util.h | 6 |
4 files changed, 27 insertions, 46 deletions
diff --git a/toolsrc/include/Paragraphs.h b/toolsrc/include/Paragraphs.h index cdd35e425..cf21635d7 100644 --- a/toolsrc/include/Paragraphs.h +++ b/toolsrc/include/Paragraphs.h @@ -11,16 +11,16 @@ namespace vcpkg::Paragraphs { using ParagraphDataMap = std::unordered_map<std::string, std::string>; - Expected<ParagraphDataMap> get_single_paragraph(Files::Filesystem& fs, const fs::path& control_path); - Expected<std::vector<ParagraphDataMap>> get_paragraphs(Files::Filesystem& fs, const fs::path& control_path); + Expected<ParagraphDataMap> get_single_paragraph(const Files::Filesystem& fs, const fs::path& control_path); + Expected<std::vector<ParagraphDataMap>> get_paragraphs(const Files::Filesystem& fs, const fs::path& control_path); Expected<ParagraphDataMap> parse_single_paragraph(const std::string& str); Expected<std::vector<ParagraphDataMap>> parse_paragraphs(const std::string& str); - Expected<SourceParagraph> try_load_port(Files::Filesystem& fs, const fs::path& control_path); + Expected<SourceParagraph> try_load_port(const Files::Filesystem& fs, const fs::path& control_path); Expected<BinaryParagraph> try_load_cached_package(const VcpkgPaths& paths, const PackageSpec& spec); - std::vector<SourceParagraph> load_all_ports(Files::Filesystem& fs, const fs::path& ports_dir); + std::vector<SourceParagraph> load_all_ports(const Files::Filesystem& fs, const fs::path& ports_dir); std::map<std::string, VersionT> extract_port_names_and_versions(const std::vector<SourceParagraph>& source_paragraphs); } diff --git a/toolsrc/include/PostBuildLint_BuildInfo.h b/toolsrc/include/PostBuildLint_BuildInfo.h index c54ea0fa5..44776d918 100644 --- a/toolsrc/include/PostBuildLint_BuildInfo.h +++ b/toolsrc/include/PostBuildLint_BuildInfo.h @@ -18,5 +18,5 @@ namespace vcpkg::PostBuildLint std::map<BuildPolicies::Type, OptBoolT> policies; }; - BuildInfo read_build_info(Files::Filesystem& fs, const fs::path& filepath); + BuildInfo read_build_info(const Files::Filesystem& fs, const fs::path& filepath); } diff --git a/toolsrc/include/vcpkg_Files.h b/toolsrc/include/vcpkg_Files.h index a114354bc..339b64364 100644 --- a/toolsrc/include/vcpkg_Files.h +++ b/toolsrc/include/vcpkg_Files.h @@ -2,13 +2,27 @@ #include "vcpkg_expected.h" #include "filesystem_fs.h" -#include <iterator> namespace vcpkg::Files { __interface Filesystem { - virtual Expected<std::string> read_contents(const fs::path& file_path) noexcept = 0; + virtual Expected<std::string> read_contents(const fs::path& file_path) const = 0; + virtual Expected<std::vector<std::string>> read_all_lines(const fs::path& file_path) const = 0; + virtual fs::path find_file_recursively_up(const fs::path& starting_dir, const std::string& filename) const = 0; + virtual std::vector<fs::path> recursive_find_all_files_in_dir(const fs::path& dir) const = 0; + virtual std::vector<fs::path> non_recursive_find_all_files_in_dir(const fs::path& dir) const = 0; + + virtual void write_all_lines(const fs::path& file_path, const std::vector<std::string>& lines) = 0; + virtual void rename(const fs::path& oldpath, const fs::path& newpath) = 0; + virtual void remove(const fs::path& path) = 0; + virtual bool exists(const fs::path& path) const = 0; + virtual bool is_directory(const fs::path& path) const = 0; + virtual bool is_regular_file(const fs::path& path) const = 0; + virtual bool is_empty(const fs::path& path) const = 0; + virtual bool create_directory(const fs::path& path, std::error_code& ec) = 0; + virtual void copy(const fs::path& oldpath, const fs::path& newpath, fs::copy_options opts) = 0; + virtual void copy_file(const fs::path& oldpath, const fs::path& newpath, fs::copy_options opts, std::error_code& ec) = 0; }; Filesystem& get_real_filesystem(); @@ -17,44 +31,5 @@ namespace vcpkg::Files bool has_invalid_chars_for_filesystem(const std::string& s); - - Expected<std::vector<std::string>> read_all_lines(const fs::path& file_path); - - void write_all_lines(const fs::path& file_path, const std::vector<std::string>& lines); - - fs::path find_file_recursively_up(const fs::path& starting_dir, const std::string& filename); - - template <class Pred> - void non_recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate, std::vector<fs::path>* output) - { - std::copy_if(fs::directory_iterator(dir), fs::directory_iterator(), std::back_inserter(*output), predicate); - } - - template <class Pred> - void recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate, std::vector<fs::path>* output) - { - 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); - - std::vector<fs::path> recursive_find_files_with_extension_in_dir(const fs::path& dir, const std::string& extension); - - void recursive_find_all_files_in_dir(const fs::path& dir, std::vector<fs::path>* output); - - std::vector<fs::path> recursive_find_all_files_in_dir(const fs::path& dir); - - void non_recursive_find_all_files_in_dir(const fs::path& dir, std::vector<fs::path>* output); - - std::vector<fs::path> non_recursive_find_all_files_in_dir(const fs::path& dir); - void print_paths(const std::vector<fs::path>& paths); } diff --git a/toolsrc/include/vcpkg_Util.h b/toolsrc/include/vcpkg_Util.h index 4ebb2a802..cd8dab437 100644 --- a/toolsrc/include/vcpkg_Util.h +++ b/toolsrc/include/vcpkg_Util.h @@ -21,4 +21,10 @@ namespace vcpkg::Util return ret; } + + template<class Container, class Pred> + void unstable_keep_if(Container& cont, Pred pred) + { + cont.erase(std::partition(cont.begin(), cont.end(), pred), cont.end()); + } }
\ No newline at end of file |
