Move source_dir outside of InstallDir struct

This commit is contained in:
Alexander Karatarakis 2017-04-19 17:48:43 -07:00
parent 96955c08e7
commit 47322f74bd
2 changed files with 13 additions and 25 deletions

View File

@ -45,25 +45,22 @@ namespace vcpkg::Commands
{ {
struct InstallDir struct InstallDir
{ {
static InstallDir from_destination_root(const fs::path& source_dir, static InstallDir from_destination_root(const fs::path& destination_root,
const fs::path& destination_root,
const std::string& destination_subdirectory, const std::string& destination_subdirectory,
const fs::path& listfile); const fs::path& listfile);
private: private:
fs::path m_source_dir; // "source" from source-destination, not source code.
fs::path m_destination; fs::path m_destination;
std::string m_destination_subdirectory; std::string m_destination_subdirectory;
fs::path m_listfile; fs::path m_listfile;
public: public:
const fs::path& source_dir() const;
const fs::path& destination() const; const fs::path& destination() const;
const std::string& destination_subdirectory() const; const std::string& destination_subdirectory() const;
const fs::path& listfile() const; const fs::path& listfile() const;
}; };
void install_files_and_write_listfile(Files::Filesystem& fs, const InstallDir& dirs); void install_files_and_write_listfile(Files::Filesystem& fs, const fs::path& source_dir, const InstallDir& dirs);
void install_package(const VcpkgPaths& paths, const BinaryParagraph& binary_paragraph, StatusParagraphs* status_db); void install_package(const VcpkgPaths& paths, const BinaryParagraph& binary_paragraph, StatusParagraphs* status_db);
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet); void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
} }

View File

@ -15,24 +15,17 @@ namespace vcpkg::Commands::Install
using Dependencies::RequestType; using Dependencies::RequestType;
using Dependencies::InstallPlanType; using Dependencies::InstallPlanType;
InstallDir InstallDir::from_destination_root(const fs::path& source_dir, InstallDir InstallDir::from_destination_root(const fs::path& destination_root,
const fs::path& destination_root, const std::string& destination_subdirectory,
const std::string& destination_subdirectory, const fs::path& listfile)
const fs::path& listfile)
{ {
InstallDir dirs; InstallDir dirs;
dirs.m_source_dir = source_dir;
dirs.m_destination = destination_root / destination_subdirectory; dirs.m_destination = destination_root / destination_subdirectory;
dirs.m_destination_subdirectory = destination_subdirectory; dirs.m_destination_subdirectory = destination_subdirectory;
dirs.m_listfile = listfile; dirs.m_listfile = listfile;
return dirs; return dirs;
} }
const fs::path& InstallDir::source_dir() const
{
return this->m_source_dir;
}
const fs::path& InstallDir::destination() const const fs::path& InstallDir::destination() const
{ {
return this->m_destination; return this->m_destination;
@ -48,16 +41,15 @@ namespace vcpkg::Commands::Install
return this->m_listfile; return this->m_listfile;
} }
void install_files_and_write_listfile(Files::Filesystem& fs, const InstallDir& dirs) void install_files_and_write_listfile(Files::Filesystem& fs, const fs::path& source_dir, const InstallDir& destination_dir)
{ {
std::vector<std::string> output; std::vector<std::string> output;
std::error_code ec; std::error_code ec;
const fs::path& source_dir = dirs.source_dir();
const size_t prefix_length = source_dir.native().size(); const size_t prefix_length = source_dir.native().size();
const fs::path& destination = dirs.destination(); const fs::path& destination = destination_dir.destination();
const std::string& destination_subdirectory = dirs.destination_subdirectory(); const std::string& destination_subdirectory = destination_dir.destination_subdirectory();
const fs::path& listfile = dirs.listfile(); const fs::path& listfile = destination_dir.listfile();
Checks::check_exit(VCPKG_LINE_INFO, fs.exists(source_dir), "Source directory %s does not exist", source_dir.generic_string()); Checks::check_exit(VCPKG_LINE_INFO, fs.exists(source_dir), "Source directory %s does not exist", source_dir.generic_string());
fs.create_directories(destination, ec); fs.create_directories(destination, ec);
@ -256,12 +248,11 @@ namespace vcpkg::Commands::Install
write_update(paths, source_paragraph); write_update(paths, source_paragraph);
status_db->insert(std::make_unique<StatusParagraph>(source_paragraph)); status_db->insert(std::make_unique<StatusParagraph>(source_paragraph));
const InstallDir dirs = InstallDir::from_destination_root(package_dir, const InstallDir install_dir = InstallDir::from_destination_root(paths.installed,
paths.installed, triplet.to_string(),
triplet.to_string(), paths.listfile_path(binary_paragraph));
paths.listfile_path(binary_paragraph));
install_files_and_write_listfile(paths.get_filesystem(), dirs); install_files_and_write_listfile(paths.get_filesystem(), package_dir, install_dir);
source_paragraph.state = InstallState::INSTALLED; source_paragraph.state = InstallState::INSTALLED;
write_update(paths, source_paragraph); write_update(paths, source_paragraph);