pub struct LinearAdapter { /* private fields */ }Expand description
The linear-cli adapter. Spawns linear-cli issues <list|get|create|update>
with the configured team and, when a secret is configured, the
LINEAR_API_KEY env pair.
Implementations§
Source§impl LinearAdapter
impl LinearAdapter
Trait Implementations§
Source§impl TrackerAdapter for LinearAdapter
impl TrackerAdapter for LinearAdapter
Source§fn mark_done(&mut self, _remote_ref: &str) -> Result<()>
fn mark_done(&mut self, _remote_ref: &str) -> Result<()>
Linear conveys done via -s Done; there is no close command.
Source§fn list_open(&mut self) -> Result<Vec<RemoteIssue>>
fn list_open(&mut self) -> Result<Vec<RemoteIssue>>
Enumerate open issues with issues list, then fetch each one’s detail.
The list payload carries only id, identifier, title, priority, state{name}, assignee{name}, project{name} — never a body, labels, or
timestamp — so the fields an import needs come from a per-issue
issues get. Cost: one list call plus one get per open issue.
Source§fn set_relations(
&mut self,
remote_ref: &str,
relations: &[MappedRelation],
) -> Result<()>
fn set_relations( &mut self, remote_ref: &str, relations: &[MappedRelation], ) -> Result<()>
Linear’s relations add, the relation affordance the 0.3.28 CLI exposes.
One call per relation, because relations add is additive and creates a
single edge: -r <RELATION> <FROM> <TO> with the relation kind and the
two issues’ remote identifiers (ENG-123); the target identifier is
what crate::sync::map_relation_to_remote resolved and carried in
value. The first failure stops the run: a partially-created relation set
is worse than a loud stop, and export is not transactional across issues
either, so a diagnostic-free partial state is exactly what a reader cannot
detect.
Source§fn set_projects(
&mut self,
_remote_ref: &str,
projects: &[MappedProject],
) -> Result<()>
fn set_projects( &mut self, _remote_ref: &str, projects: &[MappedProject], ) -> Result<()>
Linear’s side of the project-association seam — and its answer is “nothing” (WP08 T036).
Linear’s issue carries one project, so a second membership has nowhere
to go: there is no list field and therefore no command line that could carry
one. Sending the first association and diagnosing the rest would split one
membership rule across two places and quietly drop data; C-005’s answer for
all of them is the diagnostic, and the local list stays whole.
The debug_assert pins the same invariant as GitLab’s: a value cannot arrive
while PROJECT_WIRE_VERIFIED is empty, and a table flipped without an
implementation here fails loudly in every test build rather than dropping an
association in silence.
Source§fn set_epics(&mut self, _remote_ref: &str, epics: &[MappedEpic]) -> Result<()>
fn set_epics(&mut self, _remote_ref: &str, epics: &[MappedEpic]) -> Result<()>
Linear’s side of the epic-reference seam — and its answer is “nothing” (WP08,
mission epics-work-items-01M3BYW4).
Linear has no epic level at all: its issues carry one project, and the
nearest concept above a project is an initiative. Neither issues list nor
issues get returns an epic field, so there is nothing to read and no field
to send.
The debug_assert pins the same invariant as GitLab’s: a value cannot arrive
while EPIC_WIRE_VERIFIED is empty, and a table flipped without an
implementation here fails loudly in every test build rather than dropping a
reference in silence.
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 done_via_status(&self) -> bool
fn done_via_status(&self) -> bool
Auto Trait Implementations§
impl !RefUnwindSafe for LinearAdapter
impl !Sync for LinearAdapter
impl !UnwindSafe for LinearAdapter
impl Freeze for LinearAdapter
impl Send for LinearAdapter
impl Unpin for LinearAdapter
impl UnsafeUnpin for LinearAdapter
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