aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/commands_import.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-04-08 20:19:35 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-04-08 20:19:35 -0700
commitb34c40a4e674f5db538e84ca2b9509482ac140e7 (patch)
tree48a09d41e4760d97a20386dce00105cae54b1f17 /toolsrc/src/commands_import.cpp
parentc434dc99868989ca55aef5e445ac6a0a4c3430f7 (diff)
downloadvcpkg-b34c40a4e674f5db538e84ca2b9509482ac140e7.tar.gz
vcpkg-b34c40a4e674f5db538e84ca2b9509482ac140e7.zip
[vcpkg] Further work on filesystem abstraction layer.
Diffstat (limited to 'toolsrc/src/commands_import.cpp')
-rw-r--r--toolsrc/src/commands_import.cpp59
1 files changed, 36 insertions, 23 deletions
diff --git a/toolsrc/src/commands_import.cpp b/toolsrc/src/commands_import.cpp
index 0a128943d..1fcc3b3a8 100644
--- a/toolsrc/src/commands_import.cpp
+++ b/toolsrc/src/commands_import.cpp
@@ -13,56 +13,69 @@ namespace vcpkg::Commands::Import
};
- void check_is_directory(const LineInfo& line_info, const fs::path& dirpath)
+ static void check_is_directory(const LineInfo& line_info, const Files::Filesystem& fs, const fs::path& dirpath)
{
- Checks::check_exit(line_info, fs::is_directory(dirpath), "The path %s is not a directory", dirpath.string());
+ Checks::check_exit(line_info, fs.is_directory(dirpath), "The path %s is not a directory", dirpath.string());
}
- static Binaries find_binaries_in_dir(const fs::path& path)
+ static Binaries find_binaries_in_dir(const Files::Filesystem& fs, const fs::path& path)
{
- check_is_directory(VCPKG_LINE_INFO, path);
+ auto files = fs.recursive_find_all_files_in_dir(path);
+
+ check_is_directory(VCPKG_LINE_INFO, fs, path);
Binaries binaries;
- binaries.dlls = Files::recursive_find_files_with_extension_in_dir(path, ".dll");
- binaries.libs = Files::recursive_find_files_with_extension_in_dir(path, ".lib");
+ for (auto&& file : files)
+ {
+ if (fs.is_directory(file))
+ continue;
+ auto ext = file.extension();
+ if (ext == ".dll")
+ binaries.dlls.push_back(std::move(file));
+ else if (ext == ".lib")
+ binaries.libs.push_back(std::move(file));
+ }
return binaries;
}
- static void copy_files_into_directory(const std::vector<fs::path>& files, const fs::path& destination_folder)
+ static void copy_files_into_directory(Files::Filesystem& fs, const std::vector<fs::path>& files, const fs::path& destination_folder)
{
- fs::create_directory(destination_folder);
+ std::error_code ec;
+ fs.create_directory(destination_folder, ec);
for (auto const& src_path : files)
{
fs::path dest_path = destination_folder / src_path.filename();
- fs::copy(src_path, dest_path, fs::copy_options::overwrite_existing);
+ fs.copy(src_path, dest_path, fs::copy_options::overwrite_existing);
}
}
- static void place_library_files_in(const fs::path& include_directory, const fs::path& project_directory, const fs::path& destination_path)
+ static void place_library_files_in(Files::Filesystem& fs, const fs::path& include_directory, const fs::path& project_directory, const fs::path& destination_path)
{
- check_is_directory(VCPKG_LINE_INFO, include_directory);
- check_is_directory(VCPKG_LINE_INFO, project_directory);
- check_is_directory(VCPKG_LINE_INFO, destination_path);
- Binaries debug_binaries = find_binaries_in_dir(project_directory / "Debug");
- Binaries release_binaries = find_binaries_in_dir(project_directory / "Release");
+ check_is_directory(VCPKG_LINE_INFO, fs, include_directory);
+ check_is_directory(VCPKG_LINE_INFO, fs, project_directory);
+ check_is_directory(VCPKG_LINE_INFO, fs, destination_path);
+ Binaries debug_binaries = find_binaries_in_dir(fs, project_directory / "Debug");
+ Binaries release_binaries = find_binaries_in_dir(fs, project_directory / "Release");
fs::path destination_include_directory = destination_path / "include";
- fs::copy(include_directory, destination_include_directory, fs::copy_options::recursive | fs::copy_options::overwrite_existing);
+ fs.copy(include_directory, destination_include_directory, fs::copy_options::recursive | fs::copy_options::overwrite_existing);
- copy_files_into_directory(release_binaries.dlls, destination_path / "bin");
- copy_files_into_directory(release_binaries.libs, destination_path / "lib");
+ copy_files_into_directory(fs, release_binaries.dlls, destination_path / "bin");
+ copy_files_into_directory(fs, release_binaries.libs, destination_path / "lib");
- fs::create_directory(destination_path / "debug");
- copy_files_into_directory(debug_binaries.dlls, destination_path / "debug" / "bin");
- copy_files_into_directory(debug_binaries.libs, destination_path / "debug" / "lib");
+ std::error_code ec;
+ fs.create_directory(destination_path / "debug", ec);
+ copy_files_into_directory(fs, debug_binaries.dlls, destination_path / "debug" / "bin");
+ copy_files_into_directory(fs, debug_binaries.libs, destination_path / "debug" / "lib");
}
static void do_import(const VcpkgPaths& paths, const fs::path& include_directory, const fs::path& project_directory, const BinaryParagraph& control_file_data)
{
fs::path library_destination_path = paths.package_dir(control_file_data.spec);
- fs::create_directory(library_destination_path);
- place_library_files_in(include_directory, project_directory, library_destination_path);
+ std::error_code ec;
+ paths.get_filesystem().create_directory(library_destination_path, ec);
+ place_library_files_in(paths.get_filesystem(), include_directory, project_directory, library_destination_path);
fs::path control_file_path = library_destination_path / "CONTROL";
std::ofstream(control_file_path) << control_file_data;