Skip to main content

TaskFile

Struct TaskFile 

Source
pub struct TaskFile {
    pub env: Vec<(String, String)>,
    pub tasks: Vec<Task>,
    pub warnings: Vec<String>,
}
Expand description

A parsed task file: the tasks, any file-level environment hoisted to all of them (an Env: under a section heading applies to every task regardless of where in the document it appears; hoisting is not positional), and any parse warnings (an unterminated fence, a duplicate task, an unknown fence language). Parsing is infallible. A malformed file still yields what it can, so an embedder should surface warnings rather than trust silence.

Fields§

§env: Vec<(String, String)>§tasks: Vec<Task>§warnings: Vec<String>

Implementations§

Source§

impl TaskFile

Source

pub fn task(&self, name: &str) -> Option<&Task>

Find a task by name. The match is exact and case-sensitive, against the heading text as written. The first definition wins if a name is duplicated (a warning is recorded).

Source

pub fn agent_tasks(&self) -> impl Iterator<Item = &Task>

The tasks that opted in to an agent or MCP surface via Agent: allow. A caller exposing tasks to an agent should list and run only these. The flag is advisory data on Task, so this iterator is the enforcement point, not the field. (Direct field access bypasses the gate by design; the gate lives at the surface that chooses what to expose.)

Source

pub fn invocation( &self, task: &Task, args: &BTreeMap<String, String>, cwd: &Path, task_file_dir: Option<&Path>, ) -> Result<Invocation, MissingArg>

Build the invocation for task, given args mapping each name to a value (from TaskFile::bind or an embedder’s prompts). It substitutes {{ arg }} in the script and Dir:, exports the args and env, and resolves the working directory this way:

  • With no Dir:, the task runs in cwd, the invocation directory, so an inherited or global task acts on your current repo rather than on the directory the task file happens to live in.
  • A relative Dir: resolves against task_file_dir, the file that defined the task (None falls back to cwd). Dir: . pins the task to the task file’s own directory, the inverse of just’s [no-cd].
  • An absolute Dir: is used verbatim.

Missing optional and variadic args are filled from their defaults, so a partial args map is fine; only a missing required arg is an error.

The call is pure and cheap, with no filesystem or process access, so it is safe to call straight from a UI event handler or render path. Build the Invocation here and run it elsewhere.

Source

pub fn bind( task: &Task, positional: &[String], ) -> Result<BTreeMap<String, String>, MissingArg>

Bind positional argument values (for example, from the CLI) to a task’s declared Args:, applying defaults and collecting a trailing *variadic from the rest. This feeds TaskFile::invocation and errors on a missing required arg.

Trait Implementations§

Source§

impl Clone for TaskFile

Source§

fn clone(&self) -> TaskFile

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 TaskFile

Source§

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

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

impl Default for TaskFile

Source§

fn default() -> TaskFile

Returns the “default value” for a type. Read more
Source§

impl Eq for TaskFile

Source§

impl PartialEq for TaskFile

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for TaskFile

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<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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.