aboutsummaryrefslogtreecommitdiff
path: root/mod/mod-ci-github-gq.cxx
diff options
context:
space:
mode:
authorFrancois Kritzinger <francois@codesynthesis.com>2025-01-17 17:06:23 +0200
committerFrancois Kritzinger <francois@codesynthesis.com>2025-01-20 09:01:15 +0200
commitf478126a4b4df9db1180c13634e2d99580464d95 (patch)
treee05f503056e59994f7baabdad77a7ee8bfd8fa51 /mod/mod-ci-github-gq.cxx
parentff6d9af8b2f67754140faa51d154b858971b8853 (diff)
ci-github: Add output, details_url to building conclusion check run
Diffstat (limited to 'mod/mod-ci-github-gq.cxx')
-rw-r--r--mod/mod-ci-github-gq.cxx76
1 files changed, 57 insertions, 19 deletions
diff --git a/mod/mod-ci-github-gq.cxx b/mod/mod-ci-github-gq.cxx
index db69f0c..89a529c 100644
--- a/mod/mod-ci-github-gq.cxx
+++ b/mod/mod-ci-github-gq.cxx
@@ -380,9 +380,11 @@ namespace brep
assert (cr.state != build_state::built); // Not supported.
- // Ensure details URL is non-empty if present.
+ // Ensure details URL and output are non-empty if present.
//
assert (!cr.details_url || !cr.details_url->empty ());
+ assert (!cr.output ||
+ (!cr.output->title.empty () && !cr.output->summary.empty ()));
string al ("cr" + to_string (i)); // Field alias.
@@ -396,6 +398,13 @@ namespace brep
os << '\n';
os << " detailsUrl: " << gq_str (*cr.details_url);
}
+ if (cr.output)
+ {
+ os << " output: {" << '\n'
+ << " title: " << gq_str (cr.output->title) << '\n'
+ << " summary: " << gq_str (cr.output->summary) << '\n'
+ << " }";
+ }
os << "})" << '\n'
// Specify the selection set (fields to be returned). Note that we
// rename `id` to `node_id` (using a field alias) for consistency with
@@ -417,7 +426,7 @@ namespace brep
// Serialize a `createCheckRun` mutation for a build to GraphQL.
//
- // The build result argument (`br`) is required if the build_state is built
+ // The conclusion argument (`co`) is required if the build_state is built
// because GitHub does not allow a check run status of completed without a
// conclusion.
//
@@ -433,7 +442,9 @@ namespace brep
const optional<string>& du, // Details URL.
const check_run& cr,
const string& st, // Check run status.
- optional<gq_built_result> br = nullopt)
+ const string& ti, // Output title.
+ const string& su, // Output summary.
+ optional<string> co = nullopt) // Conclusion.
{
// Ensure details URL is non-empty if present.
//
@@ -455,15 +466,13 @@ namespace brep
os << '\n';
os << " detailsUrl: " << gq_str (*du);
}
- if (br)
- {
- os << '\n';
- os << " conclusion: " << gq_enum (br->conclusion) << '\n'
- << " output: {" << '\n'
- << " title: " << gq_str (br->title) << '\n'
- << " summary: " << gq_str (br->summary) << '\n'
- << " }";
- }
+ os << '\n';
+ if (co)
+ os << " conclusion: " << gq_enum (*co) << '\n';
+ os << " output: {" << '\n'
+ << " title: " << gq_str (ti) << '\n'
+ << " summary: " << gq_str (su) << '\n'
+ << " }";
os << "})" << '\n'
// Specify the selection set (fields to be returned). Note that we
// rename `id` to `node_id` (using a field alias) for consistency with
@@ -485,9 +494,8 @@ namespace brep
// Serialize an `updateCheckRun` mutation for one build to GraphQL.
//
- // The `co` (conclusion) argument is required if the build_state is built
- // because GitHub does not allow updating a check run to completed without a
- // conclusion.
+ // The `br` argument is required if the build_state is built because GitHub
+ // does not allow updating a check run to completed without a conclusion.
//
// Throw invalid_argument if any of the arguments are invalid values (of
// GraphQL types or otherwise).
@@ -586,11 +594,11 @@ namespace brep
const string& hs,
const optional<string>& du,
build_state st,
- optional<gq_built_result> br)
+ string ti, string su)
{
- // Must have a result if state is built.
+ // State cannot be built without a conclusion.
//
- assert (st != build_state::built || br);
+ assert (st != build_state::built);
string rq (
gq_serialize_request (
@@ -599,7 +607,8 @@ namespace brep
du,
cr,
gh_to_status (st),
- move (br))));
+ move (ti), move (su),
+ nullopt /* conclusion */)));
vector<check_run> crs {move (cr)};
crs[0].state = st;
@@ -612,6 +621,35 @@ namespace brep
}
bool
+ gq_create_check_run (const basic_mark& error,
+ check_run& cr,
+ const string& iat,
+ const string& rid,
+ const string& hs,
+ const optional<string>& du,
+ gq_built_result br)
+ {
+ string rq (
+ gq_serialize_request (
+ gq_mutation_create_check_run (rid,
+ hs,
+ du,
+ cr,
+ gh_to_status (build_state::built),
+ move (br.title), move (br.summary),
+ move (br.conclusion))));
+
+ vector<check_run> crs {move (cr)};
+ crs[0].state = build_state::built;
+
+ bool r (gq_mutate_check_runs (error, crs, iat, move (rq)));
+
+ cr = move (crs[0]);
+
+ return r;
+ }
+
+ bool
gq_update_check_run (const basic_mark& error,
check_run& cr,
const string& iat,