Skip to main content

Crate quarb_gitlab

Crate quarb_gitlab 

Source
Expand description

GitLab API adapter for the Quarb query engine.

GitLab’s defining shape is the deep tree — groups nest arbitrarily, and a group’s children mix subgroups and projects — which the REST API makes you walk by URL-encoded full paths and numeric ids. The arbor restores it to what it is: /tesslab/instruments/gauge/issues/7 addresses a project three levels down and its issue in one path, each segment one GET. Under a project: files (the default branch’s tree, content as the node value), issues and mrs (the open sets; direct addressing by iid reaches any state), releases, and pipelines (jobs as children — CI is half of what a GitLab project is).

GitLab is about the code, not the social graph, and the edge fabric follows: no follows, stars as a count (::stars). The relation that matters is membership->member edges on groups and projects carry their access level as edge data ($-::access, $-::role) — plus parent on forks (<-parent enumerates a project’s forks) and author / assignee / reviewer on issues and merge requests.

Metadata splits by register: comparable values are properties (::stars, ::open-issues, timestamps as instants); unary facts are traits — visibility (<private>), <archived>, <fork>, project topics, issue/MR labels verbatim (scoped labels included), <draft>, <confidential>, and pipeline/job statuses (<failed>).

Transport and auth: the adapter shells out to glab api, so hosts (GITLAB_HOST), tokens, and self-managed instances behave exactly as the glab CLI does. Read-only — only GETs. Target: gitlab: (address from the root), or gitlab:PATH to anchor a group, project, or user namespace. QUARB_GLAB overrides the binary.

Structs§

GitlabAdapter
GitLab, exposed as an arbor.

Enums§

GitlabError
An error connecting to or reading GitLab.