Skip to content

Commit f0ff8bd

Browse files
binarycaching: implement x-aws-config,trace-ops
1 parent da1f056 commit f0ff8bd

File tree

2 files changed

+55
-12
lines changed

2 files changed

+55
-12
lines changed

include/vcpkg/binarycaching.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ namespace vcpkg
168168
std::vector<std::string> aws_read_prefixes;
169169
std::vector<std::string> aws_write_prefixes;
170170
bool aws_no_sign_request = false;
171+
bool aws_trace_ops = false;
171172

172173
std::vector<std::string> cos_read_prefixes;
173174
std::vector<std::string> cos_write_prefixes;

src/vcpkg/binarycaching.cpp

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1329,8 +1329,11 @@ namespace
13291329

13301330
struct AwsStorageTool : IObjectStorageTool
13311331
{
1332-
AwsStorageTool(const ToolCache& cache, MessageSink& sink, bool no_sign_request)
1333-
: m_tool(cache.get_tool_path(Tools::AWSCLI, sink)), m_no_sign_request(no_sign_request)
1332+
AwsStorageTool(const ToolCache& cache, MessageSink& sink, bool no_sign_request, bool trace_ops)
1333+
: m_out_sink(sink)
1334+
, m_tool(cache.get_tool_path(Tools::AWSCLI, sink))
1335+
, m_no_sign_request(no_sign_request)
1336+
, m_trace_ops(trace_ops)
13341337
{
13351338
}
13361339

@@ -1342,6 +1345,14 @@ namespace
13421345

13431346
ExpectedL<CacheAvailability> stat(StringView url) const override
13441347
{
1348+
if (m_trace_ops)
1349+
{
1350+
MessageLine line{};
1351+
line.print("aws s3 ls ");
1352+
line.print(url);
1353+
m_out_sink.println(std::move(line));
1354+
}
1355+
13451356
auto cmd = Command{m_tool}.string_arg("s3").string_arg("ls").string_arg(url);
13461357
if (m_no_sign_request)
13471358
{
@@ -1387,6 +1398,16 @@ namespace
13871398
return r.error();
13881399
}
13891400

1401+
if (m_trace_ops)
1402+
{
1403+
MessageLine line{};
1404+
line.print("aws s3 cp ");
1405+
line.print(object);
1406+
line.print(" ");
1407+
line.print(archive);
1408+
m_out_sink.println(std::move(line));
1409+
}
1410+
13901411
auto cmd = Command{m_tool}.string_arg("s3").string_arg("cp").string_arg(object).string_arg(archive);
13911412
if (m_no_sign_request)
13921413
{
@@ -1398,6 +1419,16 @@ namespace
13981419

13991420
ExpectedL<Unit> upload_file(StringView object, const Path& archive) const override
14001421
{
1422+
if (m_trace_ops)
1423+
{
1424+
MessageLine line{};
1425+
line.print("aws s3 cp ");
1426+
line.print(archive);
1427+
line.print(" ");
1428+
line.print(object);
1429+
m_out_sink.println(std::move(line));
1430+
}
1431+
14011432
auto cmd = Command{m_tool}.string_arg("s3").string_arg("cp").string_arg(archive).string_arg(object);
14021433
if (m_no_sign_request)
14031434
{
@@ -1406,8 +1437,10 @@ namespace
14061437
return flatten(cmd_execute_and_capture_output(cmd), Tools::AWSCLI);
14071438
}
14081439

1440+
MessageSink& m_out_sink;
14091441
Path m_tool;
14101442
bool m_no_sign_request;
1443+
bool m_trace_ops;
14111444
};
14121445

14131446
struct CosStorageTool : IObjectStorageTool
@@ -2020,23 +2053,32 @@ namespace
20202053
}
20212054
else if (segments[0].second == "x-aws-config")
20222055
{
2023-
if (segments.size() != 2)
2056+
if (segments.size() != 2 && segments.size() != 3)
20242057
{
2025-
return add_error(msg::format(msgInvalidArgumentRequiresSingleStringArgument,
2026-
msg::binary_source = "x-aws-config"));
2058+
return add_error(
2059+
msg::format(msgInvalidArgumentRequiresOneOrTwoArguments, msg::binary_source = "x-aws-config"));
20272060
}
20282061

20292062
bool no_sign_request = false;
2030-
if (segments[1].second == "no-sign-request")
2063+
bool trace_ops = false;
2064+
for (size_t i = 1; i < segments.size(); ++i)
20312065
{
2032-
no_sign_request = true;
2033-
}
2034-
else
2035-
{
2036-
return add_error(msg::format(msgInvalidArgument), segments[1].first);
2066+
if (!no_sign_request && segments[i].second == "no-sign-request")
2067+
{
2068+
no_sign_request = true;
2069+
}
2070+
else if (!trace_ops && segments[i].second == "trace-ops")
2071+
{
2072+
trace_ops = true;
2073+
}
2074+
else
2075+
{
2076+
return add_error(msg::format(msgInvalidArgument), segments[1].first);
2077+
}
20372078
}
20382079

20392080
state->aws_no_sign_request = no_sign_request;
2081+
state->aws_trace_ops = trace_ops;
20402082
state->binary_cache_providers.insert("aws");
20412083
}
20422084
else if (segments[0].second == "x-cos")
@@ -2653,7 +2695,7 @@ namespace vcpkg
26532695
std::shared_ptr<const AwsStorageTool> aws_tool;
26542696
if (!s.aws_read_prefixes.empty() || !s.aws_write_prefixes.empty())
26552697
{
2656-
aws_tool = std::make_shared<AwsStorageTool>(tools, out_sink, s.aws_no_sign_request);
2698+
aws_tool = std::make_shared<AwsStorageTool>(tools, out_sink, s.aws_no_sign_request, s.aws_trace_ops);
26572699
}
26582700
std::shared_ptr<const CosStorageTool> cos_tool;
26592701
if (!s.cos_read_prefixes.empty() || !s.cos_write_prefixes.empty())

0 commit comments

Comments
 (0)