aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include/SourceParagraph.h
diff options
context:
space:
mode:
authorDaniel Shaw <t-dansha@microsoft.com>2017-06-05 15:58:47 -0700
committerDaniel Shaw <t-dansha@microsoft.com>2017-06-06 14:02:59 -0700
commit264cd050e6280e5b87ec055e0a9d8985a7ba30b3 (patch)
treef508fa927970257011747643f893b182691dac1e /toolsrc/include/SourceParagraph.h
parent7b4d83c444b0e7fee241ed293614efca17c67201 (diff)
downloadvcpkg-264cd050e6280e5b87ec055e0a9d8985a7ba30b3.tar.gz
vcpkg-264cd050e6280e5b87ec055e0a9d8985a7ba30b3.zip
ExpectedT factory class
Diffstat (limited to 'toolsrc/include/SourceParagraph.h')
-rw-r--r--toolsrc/include/SourceParagraph.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/toolsrc/include/SourceParagraph.h b/toolsrc/include/SourceParagraph.h
index 19f558170..9874eb3a9 100644
--- a/toolsrc/include/SourceParagraph.h
+++ b/toolsrc/include/SourceParagraph.h
@@ -1,5 +1,6 @@
#pragma once
+#include "vcpkg_expected.h"
#include <unordered_map>
#include <vector>
@@ -15,14 +16,23 @@ namespace vcpkg
const std::string& to_string(const Dependency& dep);
+ struct ParseControlErrorInfo
+ {
+ std::string name;
+ std::string remaining_fields_as_string;
+ std::string valid_fields_as_string;
+ std::error_code error;
+ };
+
/// <summary>
/// Port metadata (CONTROL file)
/// </summary>
struct SourceParagraph
{
- SourceParagraph();
+ static ExpectedT<SourceParagraph, ParseControlErrorInfo> parse_control_file(
+ std::unordered_map<std::string, std::string> fields);
- explicit SourceParagraph(std::unordered_map<std::string, std::string> fields);
+ SourceParagraph();
std::string name;
std::string version;
@@ -31,6 +41,9 @@ namespace vcpkg
std::vector<Dependency> depends;
};
+ void print_error_message(const ParseControlErrorInfo& info);
+ void print_error_message(std::vector<ParseControlErrorInfo> error_info_list);
+
std::vector<std::string> filter_dependencies(const std::vector<Dependency>& deps, const Triplet& t);
std::vector<Dependency> expand_qualified_dependencies(const std::vector<std::string>& depends);