Implement a new function "api-url", which constructs URLs using relative URI
and "resolve-uri-reference" (which implements the algorithm specified in RFC
3986 section 5.2.2) for building the URL, instead of just appending
strings. This avoids issued if the server-url ends with a slash.
Since "api-url" uses URI-objects, it makes sense to also construct the
query-part of the URL here. For this "api-url" accepts optional
key-value-pairs.
New function "json-api-fetch" is a wrapper using "api-url".
* guix/ci.scm (api-url): New function. (build): Use it.
(json-api-fetch): New function. (queued-builds, latest-builds,
evaluation, latest-evaluations, evaluation-jobs: Use it.
The checkout "input" field has been renamed "channel" in Cuirass 1.0 release.
* guix/ci.scm (<checkout>)[input]: Rename it into ...
[channel]: ... this new field.
This is in part a followup to 81c3dc3224.
* guix/ci.scm (<build>, <checkout>, <evaluation>): Define using
'define-json-mapping'.
(json->build, json->checkout, json->evaluation): Remove.
(queued-builds, latest-builds, latest-evaluations): Pass JSON arrays
through 'vector->list' to adjust for Guile-JSON 3.x.
(evaluations-for-commit): Fix typo to really export.
* guix/ci.scm (<checkout>, <evaluation>): New record types.
(latest-builds): Add #:evaluation and #:system and honor it. Define
'option'.
(json->checkout, json->evaluation, latest-evaluations)
(evaluations-for-commit): New procedures.