diff options
author | Francois Kritzinger <francois@codesynthesis.com> | 2024-05-30 11:35:38 +0200 |
---|---|---|
committer | Francois Kritzinger <francois@codesynthesis.com> | 2024-06-05 09:12:46 +0200 |
commit | 2e2a86685fb752b7a6a0b6b6aa0764beb1bdde8a (patch) | |
tree | 8c24126388a527ab8fb5019f1129d2905af8217a | |
parent | 443678c15f3bda4b258b31ed2d6ef409577cafdf (diff) |
Make details_url optional when creating or updating check runs
-rw-r--r-- | mod/mod-ci-github-gq.cxx | 53 | ||||
-rw-r--r-- | mod/mod-ci-github-gq.hxx | 8 |
2 files changed, 34 insertions, 27 deletions
diff --git a/mod/mod-ci-github-gq.cxx b/mod/mod-ci-github-gq.cxx index 9d74b5a..e5ea0c5 100644 --- a/mod/mod-ci-github-gq.cxx +++ b/mod/mod-ci-github-gq.cxx @@ -349,13 +349,17 @@ namespace brep // other states. // static string - gq_mutation_create_check_runs (const string& ri, // Repository ID - const string& hs, // Head SHA - const string& du, // Details URL. + gq_mutation_create_check_runs (const string& ri, // Repository ID + const string& hs, // Head SHA + const optional<string>& du, // Details URL. const vector<check_run>& crs, - const string& st, // Check run status. + const string& st, // Check run status. optional<gq_built_result> br = nullopt) { + // Ensure details URL is non-empty if present. + // + assert (!du || !du->empty ()); + ostringstream os; os << "mutation {" << '\n'; @@ -371,10 +375,10 @@ namespace brep << " repositoryId: " << gq_str (ri) << '\n' << " headSha: " << gq_str (hs) << '\n' << " status: " << gq_enum (st); - if (!du.empty ()) + if (du) { os << '\n'; - os << " detailsUrl: " << gq_str (du); + os << " detailsUrl: " << gq_str (*du); } if (br) { @@ -409,13 +413,17 @@ namespace brep // conclusion. // static string - gq_mutation_update_check_run (const string& ri, // Repository ID. - const string& ni, // Node ID. - const string& du, // Details URL. - const string& st, // Check run status. - optional<timestamp> sa, // Started at. + gq_mutation_update_check_run (const string& ri, // Repository ID. + const string& ni, // Node ID. + const optional<string>& du, // Details URL. + const string& st, // Check run status. + optional<timestamp> sa, // Started at. optional<gq_built_result> br) { + // Ensure details URL is non-empty if present. + // + assert (!du || !du->empty ()); + ostringstream os; os << "mutation {" << '\n' @@ -428,10 +436,10 @@ namespace brep os << '\n'; os << " startedAt: " << gq_str (gh_to_iso8601 (*sa)); } - if (!du.empty ()) + if (du) { os << '\n'; - os << " detailsUrl: " << gq_str (du); + os << " detailsUrl: " << gq_str (*du); } if (br) { @@ -472,8 +480,11 @@ namespace brep // Empty details URL because it's not available until building. // string rq ( - gq_serialize_request ( - gq_mutation_create_check_runs (rid, hs, "", crs, gh_to_status (st)))); + gq_serialize_request (gq_mutation_create_check_runs (rid, + hs, + nullopt, + crs, + gh_to_status (st)))); return gq_mutate_check_runs (error, crs, iat, move (rq), st); } @@ -484,7 +495,7 @@ namespace brep const string& iat, const string& rid, const string& hs, - const string& du, + const optional<string>& du, build_state st, optional<gq_built_result> br) { @@ -492,10 +503,6 @@ namespace brep // assert (st != build_state::built || br); - // Must have a details URL because `st` should never be queued. - // - assert (!du.empty ()); - vector<check_run> crs {move (cr)}; string rq ( @@ -520,7 +527,7 @@ namespace brep const string& iat, const string& rid, const string& nid, - const string& du, + const optional<string>& du, build_state st, optional<gq_built_result> br) { @@ -528,10 +535,6 @@ namespace brep // assert (st != build_state::built || br); - // Must have a details URL for building and built. - // - assert (!du.empty ()); - // Set `startedAt` to current time if updating to building. // optional<timestamp> sa; diff --git a/mod/mod-ci-github-gq.hxx b/mod/mod-ci-github-gq.hxx index 3d697a9..9721b6e 100644 --- a/mod/mod-ci-github-gq.hxx +++ b/mod/mod-ci-github-gq.hxx @@ -38,6 +38,8 @@ namespace brep // state and the node ID. Return false and issue diagnostics if the request // failed. // + // If the details_url is absent GitHub will use the app's homepage. + // // The gq_built_result is required if the build_state is built because // GitHub does not allow a check run status of `completed` without at least // a conclusion. @@ -55,7 +57,7 @@ namespace brep const string& installation_access_token, const string& repository_id, const string& head_sha, - const string& details_url, + const optional<string>& details_url, build_state, optional<gq_built_result> = nullopt); @@ -65,6 +67,8 @@ namespace brep // with the new state. Return false and issue diagnostics if the request // failed. // + // If the details_url is absent GitHub will use the app's homepage. + // // The gq_built_result is required if the build_state is built because // GitHub does not allow a check run status of `completed` without at least // a conclusion. @@ -75,7 +79,7 @@ namespace brep const string& installation_access_token, const string& repository_id, const string& node_id, - const string& details_url, + const optional<string>& details_url, build_state, optional<gq_built_result> = nullopt); |