Task dependencies

Using dependencies

When working with tasks you often have tasks that depend on other task to being run. Tools like make or just have a special syntax to define dependencies between tasks, nur does not have this special syntax. Instead nur allows you to call your dependencies like you normally would inside any shell.

Example

Let’s say you have a task called nur qa that calls the nur test and nur lint tasks.

def "nur test" [] { }
def "nur lint" [] { }

def "nur qa" [] {
    nur lint
    nur test
}

You can now run nur qa and both nur test and nur lint will be run.

Calling nur ... inside a task will not execute a new nur process, instead everything will run just inside the current nur process. If you want to call nur as an external command you can use ^nur ... instead.

Dependency order

With this very simple and basic concept for running dependencies you can call dependencies at any place in your task. So you could also call a dependency at the end of the task or in the middle of the task.

def "nur publish" [] { }

def "nur safe-publish" [] {
    cargo check
    nur publish
}

Note: When calling dependencies at the end of the task, please keep in mind that the return values and output of the task will be what the last line in your task produces, see Defining nur tasks.

Passing parameters to dependencies

As dependencies are normal nur task calls you can pass any parameter to them, like you normally would.

def "nur publish" [
    --dry-run,
] { }

def "nur extra-safe-publish" [] {
    cargo check
    nur publish --dry-run
    nur publish
}