aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois Kritzinger <francois@codesynthesis.com>2024-10-25 08:45:25 +0200
committerFrancois Kritzinger <francois@codesynthesis.com>2024-10-25 11:22:11 +0200
commit69d87bcad5b0c252fa4cc3ee09431a822d3352ae (patch)
treef925244af6bf9419cc795fa35a3075a58c57fce0
parent1bfb0c463d49e939dabc71fbb6adbc154915e619 (diff)
Post-review changes
-rw-r--r--mod/mod-ci-github-gh.cxx25
-rw-r--r--mod/mod-ci-github-gh.hxx4
-rw-r--r--mod/mod-ci-github-service-data.cxx13
-rw-r--r--mod/mod-ci-github-service-data.hxx8
-rw-r--r--mod/mod-ci-github.cxx11
5 files changed, 38 insertions, 23 deletions
diff --git a/mod/mod-ci-github-gh.cxx b/mod/mod-ci-github-gh.cxx
index 92b2970..dcea563 100644
--- a/mod/mod-ci-github-gh.cxx
+++ b/mod/mod-ci-github-gh.cxx
@@ -129,9 +129,14 @@ namespace brep
return p.name () == s ? (v = true) : false;
};
- if (c (ni, "node_id")) node_id = p.next_expect_string ();
- else if (c (hb, "head_branch")) head_branch = p.next_expect_string ();
- else if (c (hs, "head_sha")) head_sha = p.next_expect_string ();
+ if (c (ni, "node_id")) node_id = p.next_expect_string ();
+ else if (c (hb, "head_branch"))
+ {
+ string* v (p.next_expect_string_null ());
+ if (v != nullptr)
+ head_branch = *v;
+ }
+ else if (c (hs, "head_sha")) head_sha = p.next_expect_string ();
else p.next_expect_value_skip ();
}
@@ -144,7 +149,7 @@ namespace brep
operator<< (ostream& os, const gh_check_suite& cs)
{
os << "node_id: " << cs.node_id
- << ", head_branch: " << cs.head_branch
+ << ", head_branch: " << (cs.head_branch ? *cs.head_branch : "null")
<< ", head_sha: " << cs.head_sha;
return os;
@@ -221,7 +226,7 @@ namespace brep
while (p.next_expect (event::name, event::end_object))
{
if (c (fn, "full_name"))
- base_fullname = p.next_expect_string ();
+ base_path = p.next_expect_string ();
else
p.next_expect_value_skip ();
}
@@ -251,7 +256,7 @@ namespace brep
while (p.next_expect (event::name, event::end_object))
{
if (c (fn, "full_name"))
- head_fullname = p.next_expect_string ();
+ head_path = p.next_expect_string ();
else
p.next_expect_value_skip ();
}
@@ -289,12 +294,12 @@ namespace brep
: "null")
<< ", merge_commit_sha:" << pr.merge_commit_sha
<< ", base: { "
- << "full_name: " << pr.base_fullname
+ << "path: " << pr.base_path
<< ", ref: " << pr.base_ref
<< ", sha: " << pr.base_sha
<< " }"
<< ", head: { "
- << "full_name: " << pr.head_fullname
+ << "path: " << pr.head_path
<< ", ref: " << pr.head_ref
<< ", sha: " << pr.head_sha
<< " }";
@@ -322,7 +327,7 @@ namespace brep
if (c (ni, "node_id")) node_id = p.next_expect_string ();
else if (c (nm, "name")) name = p.next_expect_string ();
- else if (c (fn, "full_name")) full_name = p.next_expect_string ();
+ else if (c (fn, "full_name")) path = p.next_expect_string ();
else if (c (db, "default_branch")) default_branch = p.next_expect_string ();
else if (c (cu, "clone_url")) clone_url = p.next_expect_string ();
else p.next_expect_value_skip ();
@@ -340,7 +345,7 @@ namespace brep
{
os << "node_id: " << rep.node_id
<< ", name: " << rep.name
- << ", full_name: " << rep.full_name
+ << ", path: " << rep.path
<< ", default_branch: " << rep.default_branch
<< ", clone_url: " << rep.clone_url;
diff --git a/mod/mod-ci-github-gh.hxx b/mod/mod-ci-github-gh.hxx
index 3cbdb77..58714be 100644
--- a/mod/mod-ci-github-gh.hxx
+++ b/mod/mod-ci-github-gh.hxx
@@ -47,7 +47,7 @@ namespace brep
struct gh_check_suite
{
string node_id;
- string head_branch; // @@ Make optional (can be NULL).
+ optional<string> head_branch;
string head_sha;
explicit
@@ -124,7 +124,7 @@ namespace brep
{
string node_id;
string name;
- string full_name;
+ string path; // Repository path (<org>/<repo>) under github.com.
string default_branch;
string clone_url;
diff --git a/mod/mod-ci-github-service-data.cxx b/mod/mod-ci-github-service-data.cxx
index ebb692b..11e19ae 100644
--- a/mod/mod-ci-github-service-data.cxx
+++ b/mod/mod-ci-github-service-data.cxx
@@ -105,17 +105,18 @@ namespace brep
timestamp iat_ea,
uint64_t iid,
string rid,
- enum kind k,
+ kind_type k,
bool rr,
bool pc,
- string hs)
+ string cs,
+ string rs)
: kind (k), pre_check (pc), re_request (rr),
warning_success (ws),
installation_access (move (iat_tok), iat_ea),
installation_id (iid),
repository_node_id (move (rid)),
- check_sha (hs),
- report_sha (move (hs))
+ check_sha (move (cs)),
+ report_sha (move (rs))
{
}
@@ -127,9 +128,10 @@ namespace brep
timestamp iat_ea,
uint64_t iid,
string rid,
- enum kind k,
+ kind_type k,
bool rr,
bool pc,
+ string cs,
string rs,
string rcu,
uint32_t prn)
@@ -140,6 +142,7 @@ namespace brep
repository_node_id (move (rid)),
repository_clone_url (move (rcu)),
pr_number (prn),
+ check_sha (move (cs)),
report_sha (move (rs))
{
}
diff --git a/mod/mod-ci-github-service-data.hxx b/mod/mod-ci-github-service-data.hxx
index 15f8c94..ae1506d 100644
--- a/mod/mod-ci-github-service-data.hxx
+++ b/mod/mod-ci-github-service-data.hxx
@@ -149,10 +149,11 @@ namespace brep
timestamp iat_expires_at,
uint64_t installation_id,
string repository_node_id,
- enum kind kind,
+ kind_type kind,
bool pre_check,
bool re_request,
- string head_sha);
+ string check_sha,
+ string report_sha);
// The pull_request constructor.
//
@@ -161,9 +162,10 @@ namespace brep
timestamp iat_expires_at,
uint64_t installation_id,
string repository_node_id,
- enum kind kind,
+ kind_type kind,
bool pre_check,
bool re_request,
+ string check_sha,
string report_sha,
string repository_clone_url,
uint32_t pr_number);
diff --git a/mod/mod-ci-github.cxx b/mod/mod-ci-github.cxx
index 4694599..6784db8 100644
--- a/mod/mod-ci-github.cxx
+++ b/mod/mod-ci-github.cxx
@@ -725,14 +725,18 @@ namespace brep
// Distinguish between local and remote PRs by comparing the head and base
// repositories' paths.
//
- enum service_data::kind kind (
+ service_data::kind_type kind (
pr.pull_request.head_path == pr.pull_request.base_path
? service_data::local
: service_data::remote);
- // Note that PR rebuilds (re-requested) are handled by check_suite().
+ // Note: For remote PRs the check_sha will be set later, in
+ // build_unloaded_pre_check().
//
- // Note that check_sha will be set later, in build_unloaded_pre_check().
+ string check_sha (kind == service_data::local ? pr.pull_request.head_sha
+ : "");
+
+ // Note that PR rebuilds (re-requested) are handled by check_suite().
//
service_data sd (warning_success,
move (iat->token),
@@ -740,6 +744,7 @@ namespace brep
pr.installation.id,
move (pr.repository.node_id),
kind, true /* pre_check */, false /* re_request */,
+ move (check_sha),
move (pr.pull_request.head_sha) /* report_sha */,
move (pr.repository.clone_url),
pr.pull_request.number);