aboutsummaryrefslogtreecommitdiff
path: root/mod/mod-ci-github-gq.cxx
diff options
context:
space:
mode:
authorFrancois Kritzinger <francois@codesynthesis.com>2024-04-29 10:51:12 +0200
committerFrancois Kritzinger <francois@codesynthesis.com>2024-05-13 09:17:32 +0200
commitcfeb6772b831fa3930a1cc8c1ffa4ece4fcf364c (patch)
treeba063ec5efaa6f44185c9d7da1ffac3e78693826 /mod/mod-ci-github-gq.cxx
parentf241ee95ca168df3e48dce3b9cc3325b7eb5f0b2 (diff)
Handle warning_success webhook query parameter
Diffstat (limited to 'mod/mod-ci-github-gq.cxx')
-rw-r--r--mod/mod-ci-github-gq.cxx52
1 files changed, 31 insertions, 21 deletions
diff --git a/mod/mod-ci-github-gq.cxx b/mod/mod-ci-github-gq.cxx
index b9e5908..c37c889 100644
--- a/mod/mod-ci-github-gq.cxx
+++ b/mod/mod-ci-github-gq.cxx
@@ -317,15 +317,16 @@ namespace brep
// Serialize `createCheckRun` mutations for one or more builds to GraphQL.
//
- // The result_status is required if the build_state is built because GitHub
- // does not allow a check run status of completed without a conclusion.
+ // The `co` (conclusion) argument is required if the build_state is built
+ // because GitHub does not allow a check run status of completed without a
+ // conclusion.
//
static string
gq_mutation_create_check_runs (const string& ri, // Repository ID
const string& hs, // Head SHA
const vector<check_run>& crs,
- build_state st,
- optional<result_status> rs = nullopt)
+ const string& st, // Check run status.
+ const optional<string>& co = nullopt)
{
ostringstream os;
@@ -341,12 +342,11 @@ namespace brep
<< " name: " << gq_str (crs[i].name) << ',' << '\n'
<< " repositoryId: " << gq_str (ri) << ',' << '\n'
<< " headSha: " << gq_str (hs) << ',' << '\n'
- << " status: " << gq_enum (gh_to_status (st));
- if (rs)
+ << " status: " << gq_enum (st);
+ if (co)
{
- // @@ TODO Pass valid boolean
os << ',' << '\n'
- << " conclusion: " << gq_enum (gh_to_conclusion (*rs, false));
+ << " conclusion: " << gq_enum (*co);
}
os << "})" << '\n'
// Specify the selection set (fields to be returned).
@@ -367,14 +367,15 @@ namespace brep
// Serialize an `updateCheckRun` mutation for one build to GraphQL.
//
- // The result_status is required if the build_state is built because GitHub
- // does not allow updating a check run to completed without a conclusion.
+ // 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.
//
static string
gq_mutation_update_check_run (const string& ri, // Repository ID.
const string& ni, // Node ID.
- build_state st,
- optional<result_status> rs)
+ const string& st, // Check run status.
+ const optional<string>& co)
{
ostringstream os;
@@ -382,12 +383,11 @@ namespace brep
<< "cr0:updateCheckRun(input: {" << '\n'
<< " checkRunId: " << gq_str (ni) << ',' << '\n'
<< " repositoryId: " << gq_str (ri) << ',' << '\n'
- << " status: " << gq_enum (gh_to_status (st));
- if (rs)
+ << " status: " << gq_enum (st);
+ if (co)
{
- // @@ TODO Pass valid boolean
os << ',' << '\n'
- << " conclusion: " << gq_enum (gh_to_conclusion (*rs, false));
+ << " conclusion: " << gq_enum (*co);
}
os << "})" << '\n'
// Specify the selection set (fields to be returned).
@@ -417,7 +417,7 @@ namespace brep
assert (st != build_state::built);
string rq (gq_serialize_request (
- gq_mutation_create_check_runs (rid, hs, crs, st)));
+ gq_mutation_create_check_runs (rid, hs, crs, gh_to_status (st))));
return gq_mutate_check_runs (error, crs, iat, move (rq), st);
}
@@ -429,7 +429,8 @@ namespace brep
const string& rid,
const string& hs,
build_state st,
- optional<result_status> rs)
+ optional<result_status> rs,
+ bool ws)
{
// Must have a result if state is built.
//
@@ -437,8 +438,12 @@ namespace brep
vector<check_run> crs {move (cr)};
+ optional<string> co; // Conclusion.
+ if (rs)
+ co = gh_to_conclusion (*rs, ws);
+
string rq (gq_serialize_request (
- gq_mutation_create_check_runs (rid, hs, crs, st, rs)));
+ gq_mutation_create_check_runs (rid, hs, crs, gh_to_status (st), co)));
bool r (gq_mutate_check_runs (error, crs, iat, move (rq), st));
@@ -454,14 +459,19 @@ namespace brep
const string& rid,
const string& nid,
build_state st,
- optional<result_status> rs)
+ optional<result_status> rs,
+ bool ws)
{
// Must have a result if state is built.
//
assert (st != build_state::built || rs);
+ optional<string> co; // Conclusion.
+ if (rs)
+ co = gh_to_conclusion (*rs, ws);
+
string rq (gq_serialize_request (
- gq_mutation_update_check_run (rid, nid, st, rs)));
+ gq_mutation_update_check_run (rid, nid, gh_to_status (st), co)));
vector<check_run> crs {move (cr)};