diff options
Diffstat (limited to 'toolsrc/src/commands_import.cpp')
| -rw-r--r-- | toolsrc/src/commands_import.cpp | 59 |
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; |
