Skip to main content

DeclaredCommandContract

Struct DeclaredCommandContract 

Source
pub struct DeclaredCommandContract {
    pub name: String,
    pub parameters: Vec<CommandParameterContract>,
    pub lines: Vec<CommandLineContract>,
    pub env: Vec<EnvBindingContract>,
    pub cwd: Option<String>,
    pub prior_form_refusal: Option<String>,
}
Expand description

The emitted, executable form of one declared command.

Deserialization is hand-written (in [super::compat]): it reads this shape as written, and reads the PRIOR archive form — program words plus args slots — by translating it into this shape at the wire, so an archive deployed before the reshape still opens everywhere.

Fields§

§name: String

The declaration’s own name, carried so a refusal can say which command it is talking about.

§parameters: Vec<CommandParameterContract>

The declared parameters, in declared order.

§lines: Vec<CommandLineContract>

The body’s logical lines, in execution order.

§env: Vec<EnvBindingContract>

The document’s exported environment bindings, in declared order.

§cwd: Option<String>

The document’s declared working directory, verbatim — any {workspace_root} placeholder unexpanded, because expanding it is the executing side’s act against ITS workspace.

§prior_form_refusal: Option<String>

Set ONLY by the prior-archive reader ([super::compat]), naming a construct of the prior form this shape cannot express faithfully. A contract carrying it still reads, lists and censuses everywhere; Self::render refuses it with the construct and the cure, so the unexpressible part can never execute as something it did not mean. The emitter never sets it.

Implementations§

Source§

impl DeclaredCommandContract

Source

pub fn parameter_names(&self) -> Vec<&str>

Every parameter name this command declares, in declared order.

Source

pub fn render( &self, supplied: &BTreeMap<String, ArgumentValue>, ) -> Result<RenderedCommand, RenderError>

Resolve this command against supplied.

supplied must name only parameters this command declares — a name it does not is refused rather than ignored, because a value nothing consumes is a value nobody reviewed. A caller holding a WIDER set (an action’s parameters, say, of which the command uses some) narrows it first with Self::parameter_names.

§Errors

Returns the first refusal the resolution earns: an undeclared or missing argument, a list where one value belongs, a leading-dash operand standing where the program still reads options, or a body that reads a parameter the command does not declare.

Trait Implementations§

Source§

impl Clone for DeclaredCommandContract

Source§

fn clone(&self) -> DeclaredCommandContract

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DeclaredCommandContract

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for DeclaredCommandContract

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for DeclaredCommandContract

Source§

impl PartialEq for DeclaredCommandContract

Source§

fn eq(&self, other: &DeclaredCommandContract) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for DeclaredCommandContract

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for DeclaredCommandContract

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more