aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include/vcpkg_Files.h
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-04-14 16:07:54 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-04-14 16:07:54 -0700
commit20397fc845fac398a1aca2ee17ce5b932fc1a83b (patch)
tree51235bc2602a81a89da9605272a37ca4fc1765a8 /toolsrc/include/vcpkg_Files.h
parent8183671a492aa21ec20780a77f923848b0aeca41 (diff)
parent1c08a42091cb0addd1e0c1daf27d24bf4e9d237f (diff)
downloadvcpkg-20397fc845fac398a1aca2ee17ce5b932fc1a83b.tar.gz
vcpkg-20397fc845fac398a1aca2ee17ce5b932fc1a83b.zip
Merge branch 'dev/roschuma/fs-testing'
Diffstat (limited to 'toolsrc/include/vcpkg_Files.h')
-rw-r--r--toolsrc/include/vcpkg_Files.h67
1 files changed, 26 insertions, 41 deletions
diff --git a/toolsrc/include/vcpkg_Files.h b/toolsrc/include/vcpkg_Files.h
index c1cf5b371..3fbaad363 100644
--- a/toolsrc/include/vcpkg_Files.h
+++ b/toolsrc/include/vcpkg_Files.h
@@ -2,53 +2,38 @@
#include "vcpkg_expected.h"
#include "filesystem_fs.h"
-#include <iterator>
namespace vcpkg::Files
{
- static const char* FILESYSTEM_INVALID_CHARACTERS = R"(\/:*?"<>|)";
-
- bool has_invalid_chars_for_filesystem(const std::string& s);
-
- Expected<std::string> read_contents(const fs::path& file_path) noexcept;
-
- 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)
+ __interface Filesystem
{
- 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);
+ virtual Expected<std::string> read_contents(const fs::path& file_path) const = 0;
+ virtual Expected<std::vector<std::string>> read_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> get_files_recursive(const fs::path& dir) const = 0;
+ virtual std::vector<fs::path> get_files_non_recursive(const fs::path& dir) const = 0;
+
+ virtual void write_lines(const fs::path& file_path, const std::vector<std::string>& lines) = 0;
+ virtual void write_contents(const fs::path& file_path, const std::string& data) = 0;
+ virtual void rename(const fs::path& oldpath, const fs::path& newpath) = 0;
+ virtual bool remove(const fs::path& path) = 0;
+ virtual bool remove(const fs::path& path, std::error_code& ec) = 0;
+ virtual std::uintmax_t remove_all(const fs::path& path, std::error_code& ec) = 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 bool copy_file(const fs::path& oldpath, const fs::path& newpath, fs::copy_options opts, std::error_code& ec) = 0;
+ virtual fs::file_status status(const fs::path& path, std::error_code& ec) const = 0;
+ };
+
+ Filesystem& get_real_filesystem();
- 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);
+ static const char* FILESYSTEM_INVALID_CHARACTERS = R"(\/:*?"<>|)";
- std::vector<fs::path> non_recursive_find_all_files_in_dir(const fs::path& dir);
+ bool has_invalid_chars_for_filesystem(const std::string& s);
void print_paths(const std::vector<fs::path>& paths);
}