blob: 5fd540f78d4632dfc55b1b25c4834ad03f8a0870 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
// file : mod/build-config.cxx -*- C++ -*-
// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
// license : MIT; see accompanying LICENSE file
#include <mod/build-config.hxx>
#include <map>
#include <web/mime-url-encoding.hxx>
namespace brep
{
using namespace web;
using namespace bbot;
shared_ptr<const build_configs>
shared_build_config (const path& p)
{
static std::map<path, weak_ptr<build_configs>> configs;
auto i (configs.find (p));
if (i != configs.end ())
{
if (shared_ptr<build_configs> c = i->second.lock ())
return c;
}
shared_ptr<build_configs> c (
make_shared<build_configs> (parse_buildtab (p)));
configs[p] = c;
return c;
}
string
build_log_url (const string& host, const dir_path& root,
const build& b,
const string* op)
{
// Note that '+' is the only package version character that potentially
// needs to be url-encoded, and only in the query part of the URL. We embed
// the package version into the URL path part and so don't encode it.
//
string url (host + root.representation () +
mime_url_encode (b.package_name) + '/' +
b.package_version.string () + "/log/" +
mime_url_encode (b.configuration) + '/' +
b.toolchain_version.string ());
if (op != nullptr)
{
url += '/';
url += *op;
}
return url;
}
string
force_rebuild_url (const string& host, const dir_path& root, const build& b)
{
// Note that '+' is the only package version character that potentially
// needs to be url-encoded, and only in the query part of the URL. However
// we embed the package version into the URL query part, where it is not
// encoded by design.
//
return host + root.string () +
"?build-force&p=" + mime_url_encode (b.package_name) +
"&v=" + b.package_version.string () +
"&c=" + mime_url_encode (b.configuration) +
"&t=" + b.toolchain_version.string () + "&reason=";
}
}
|