pub struct GitLabAdapter { /* private fields */ }Expand description
The glab adapter. Spawns glab issue <create|update|close|list> with
the configured project and, when a secret is configured, the
GITLAB_TOKEN env pair.
Implementations§
Trait Implementations§
Source§impl TrackerAdapter for GitLabAdapter
impl TrackerAdapter for GitLabAdapter
Source§fn set_relations(
&mut self,
remote_ref: &str,
relations: &[MappedRelation],
) -> Result<()>
fn set_relations( &mut self, remote_ref: &str, relations: &[MappedRelation], ) -> Result<()>
glab issue update <ref> --blocking <refs> (WP07 T030).
The only relation affordance glab exposes on an issue update is
--blocking, so a blocks edge is the only thing that can leave the
machine — and that is decided by the shared seam, not here. What arrives
is already filtered; this method only renders it.
--blocking is not additive in glab: it replaces the issue’s blocked-by
set. So the full set is sent in one call rather than one call per edge,
which is also one fewer chance to leave the remote half-configured.
Source§fn set_projects(
&mut self,
_remote_ref: &str,
projects: &[MappedProject],
) -> Result<()>
fn set_projects( &mut self, _remote_ref: &str, projects: &[MappedProject], ) -> Result<()>
GitLab’s side of the project-association seam — and its answer is “nothing” (WP08 T036).
glab names the one project an issue lives in (--project <path>,
which this adapter already passes on every call) and exposes no membership
flag, so there is no command line a membership list could be rendered as.
Inventing one is precisely what T036 step 3 forbids, and sending a partial
list would drop the rest of it, which C-005 forbids.
So this returns without spawning anything, and the debug_assert states the
invariant the seam holds it to: the table that decides representability
(PROJECT_WIRE_VERIFIED) is empty, so a value cannot reach here — and
flipping that table without an implementation here would be a silent drop,
which is loud in every test build instead.
Source§fn set_epics(&mut self, _remote_ref: &str, epics: &[MappedEpic]) -> Result<()>
fn set_epics(&mut self, _remote_ref: &str, epics: &[MappedEpic]) -> Result<()>
GitLab’s side of the epic-reference seam — and its answer is “nothing” (WP08,
mission epics-work-items-01M3BYW4).
glab’s issue carries at most one epic (epic_iid, which this adapter
already reads as the issue’s single parent) and exposes no flag to set it and
no list form, so there is no command line an epic membership list could be
rendered as. Inventing one is precisely what T038 step 3 forbids, and sending
one member of a list would drop the rest, which C-007 forbids.
So this returns without spawning anything, and the debug_assert states the
invariant the seam holds it to: the table that decides representability
(EPIC_WIRE_VERIFIED) is empty, so a value cannot reach here — and flipping
that table without an implementation here would be a silent drop, which is
loud in every test build instead.
fn tool(&self) -> Tool
Source§fn create_issue(
&mut self,
title: &str,
body: &str,
labels: &[String],
assignee: Option<&str>,
_priority: Option<&str>,
_status: &str,
) -> Result<String>
fn create_issue( &mut self, title: &str, body: &str, labels: &[String], assignee: Option<&str>, _priority: Option<&str>, _status: &str, ) -> Result<String>
iid, Linear
identifier).Source§fn update_issue(
&mut self,
remote_ref: &str,
title: &str,
body: &str,
labels: &[String],
assignee: Option<&str>,
_priority: Option<&str>,
_status: &str,
) -> Result<()>
fn update_issue( &mut self, remote_ref: &str, title: &str, body: &str, labels: &[String], assignee: Option<&str>, _priority: Option<&str>, _status: &str, ) -> Result<()>
Source§fn mark_done(&mut self, remote_ref: &str) -> Result<()>
fn mark_done(&mut self, remote_ref: &str) -> Result<()>
issue close <id>). Only invoked when
done_via_status is false.Source§fn list_open(&mut self) -> Result<Vec<RemoteIssue>>
fn list_open(&mut self) -> Result<Vec<RemoteIssue>>
Source§fn done_via_status(&self) -> bool
fn done_via_status(&self) -> bool
Auto Trait Implementations§
impl !RefUnwindSafe for GitLabAdapter
impl !Sync for GitLabAdapter
impl !UnwindSafe for GitLabAdapter
impl Freeze for GitLabAdapter
impl Send for GitLabAdapter
impl Unpin for GitLabAdapter
impl UnsafeUnpin for GitLabAdapter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more