pub struct GhaWorkflowEntry {
pub name: String,
pub rel_path: PathBuf,
pub workflow: Workflow,
}Expand description
Bridge a PipelineLoader into the SubPipelineResolver trait so
PipelineRunner can recurse into
SubPipeline children without runner.rs taking a direct dependency on
the loader (and so callers don’t need to write their own resolver).
Resolution:
Builtin(name)→loader.load(name)(which itself prefers camp-level.yah/qed/<name>.tomlover the bundled builtin — same precedence as any other pipeline lookup).Path(p)→loader.load_from_file(&p)againstpas-is when absolute, otherwise resolved against the loader’sqed_dirparent (the camp root).GhaWorkflow { .. }→ returnsNoneuntil W200-F9 (StepKind::GhaWorkflow- native runtime dispatch) lands; the runner surfaces this as a clear
“unresolvable”
StepFailedat execution time.
- native runtime dispatch) lands; the runner surfaces this as a clear
“unresolvable”
Errors from the underlying load are swallowed into None so the
walker / runner can give consistent “unresolvable” error messages
(rather than threading a richer error through SubPipelineResolver).
Operators see the missing-pipeline path/name in the runner’s
StepFailed.msg; if load returned an error mid-recursion, the
equivalent surface is “target not found”.
One parsed .github/workflows/<name>.yml surfaced by
PipelineLoader::list_gha_workflows. The daemon’s qed.pipelines
handler uses this to flatten jobs/steps into a QedPipelineWire, and
PipelineLoader::load uses it to synthesise a one-step
StepKind::GhaWorkflow pipeline when an operator runs the workflow by
name (so yah qed run release works for .github/workflows/release.yml).
Fields§
§name: StringFilename stem (release.yml → release). The catalog key.
rel_path: PathBufPath relative to the workspace root (.github/workflows/release.yml).
workflow: WorkflowFully parsed workflow as returned by yah_qed_gha::parse_workflow. The
daemon walks workflow.jobs[].steps[] to build the wire’s steps[],
keeping a single source of truth between visualisation and execution.
Auto Trait Implementations§
impl Freeze for GhaWorkflowEntry
impl RefUnwindSafe for GhaWorkflowEntry
impl Send for GhaWorkflowEntry
impl Sync for GhaWorkflowEntry
impl Unpin for GhaWorkflowEntry
impl UnsafeUnpin for GhaWorkflowEntry
impl UnwindSafe for GhaWorkflowEntry
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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