aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg.cpp
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2016-11-15 11:56:46 -0800
committerAlexander Karatarakis <alkarata@microsoft.com>2016-11-15 11:58:13 -0800
commit2584f3e3def7f09bc373117985013ac019aa76d6 (patch)
tree6ef2e0b666bd7917b644d420abdad77e6c667d6f /toolsrc/src/vcpkg.cpp
parenta72be4b6b9b63a7a11f507782c1c26fdd2b18ad0 (diff)
downloadvcpkg-2584f3e3def7f09bc373117985013ac019aa76d6.tar.gz
vcpkg-2584f3e3def7f09bc373117985013ac019aa76d6.zip
Major refactor/rework of dependency resolution
Diffstat (limited to 'toolsrc/src/vcpkg.cpp')
-rw-r--r--toolsrc/src/vcpkg.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg.cpp b/toolsrc/src/vcpkg.cpp
index 6e47df2c8..db85eee8f 100644
--- a/toolsrc/src/vcpkg.cpp
+++ b/toolsrc/src/vcpkg.cpp
@@ -369,3 +369,39 @@ void vcpkg::deinstall_package(const vcpkg_paths& paths, const package_spec& spec
write_update(paths, pkg);
System::println(System::color::success, "Package %s was successfully removed", pkg.package.displayname());
}
+
+expected<SourceParagraph> vcpkg::try_load_port(const fs::path& path)
+{
+ try
+ {
+ auto pghs = Paragraphs::get_paragraphs(path / "CONTROL");
+ Checks::check_exit(pghs.size() == 1, "Invalid control file at %s\\CONTROL", path.string());
+ return SourceParagraph(pghs[0]);
+ }
+ catch (std::runtime_error const&)
+ {
+ }
+
+ return std::errc::no_such_file_or_directory;
+}
+
+expected<BinaryParagraph> vcpkg::try_load_cached_package(const vcpkg_paths& paths, const package_spec& spec)
+{
+ const fs::path path = paths.package_dir(spec) / "CONTROL";
+
+ auto control_contents_maybe = Files::get_contents(path);
+ if (auto control_contents = control_contents_maybe.get())
+ {
+ std::vector<std::unordered_map<std::string, std::string>> pghs;
+ try
+ {
+ pghs = Paragraphs::parse_paragraphs(*control_contents);
+ }
+ catch (std::runtime_error)
+ {
+ }
+ Checks::check_exit(pghs.size() == 1, "Invalid control file at %s", path.string());
+ return BinaryParagraph(pghs[0]);
+ }
+ return control_contents_maybe.error_code();
+}