aboutsummaryrefslogtreecommitdiff
path: root/mod
diff options
context:
space:
mode:
authorFrancois Kritzinger <francois@codesynthesis.com>2024-04-17 08:24:02 +0200
committerFrancois Kritzinger <francois@codesynthesis.com>2024-10-15 09:05:27 +0200
commitdd55c9a89ebb7d4a515f317dc738b7a5ba6a4ce4 (patch)
tree423f88a5c29d527a6191a99b764c98c321a0164e /mod
parent72cb66f096028fe2fc429e8fe8212bff2f45e2f1 (diff)
Add conversion between build_state and GitHub check run status
Diffstat (limited to 'mod')
-rw-r--r--mod/mod-ci-github.cxx24
1 files changed, 24 insertions, 0 deletions
diff --git a/mod/mod-ci-github.cxx b/mod/mod-ci-github.cxx
index 9541c73..631ffbd 100644
--- a/mod/mod-ci-github.cxx
+++ b/mod/mod-ci-github.cxx
@@ -585,6 +585,30 @@ namespace brep
return r;
}
+ // Return the GitHub check run status corresponding to a build_state.
+ //
+ static const string&
+ to_string_gh (build_state st)
+ {
+ static const string sts[] {"QUEUED", "IN_PROGRESS", "COMPLETED"};
+
+ return sts[static_cast<size_t> (st)];
+ }
+
+ // Return the build_state corresponding to a GitHub check run status
+ // string. Throw invalid_argument if the passed status was invalid.
+ //
+ static build_state
+ from_string_gh (const string& s)
+ {
+ if (s == "QUEUED") return build_state::queued;
+ else if (s == "IN_PROGRESS") return build_state::building;
+ else if (s == "COMPLETED") return build_state::built;
+ else
+ throw invalid_argument ("invalid GitHub check run status: '" + s +
+ '\'');
+ }
+
// Serialize `createCheckRun` mutations for one or more builds to GraphQL.
//
static string