mirror of
https://github.com/nushell/nu_scripts.git
synced 2024-09-11 13:45:56 +03:00
I used [typos](https://github.com/crate-ci/typos/). I manually checked all the corrections and they seem safe to me. There are still some left, but those in this PR are good |
||
---|---|---|
.. | ||
README.md | ||
task.nu |
Background tasks with pueue
Makes Nushell "support" background tasks.
Prerequisite
Install pueue and make sure pueued
is running and that pueue
is in PATH
.
Usage
You will get tab completions and suggestions when you install the module. Please check those.
To install the module, copy the task.nu
to the $env.NU_LIB_DIRS
directory, then do:
use task.nu
In your Nushell config under ~/.config/nushell
.
Q&A
How can I pass data to a background task?
You can use environment variables, since they are inherited from the parent when spawning a process.
$env.FOO = 123
task spawn {
echo $env.FOO
}
If you want to pass serialized data, you can do this:
let foo = { a: 1 b: 2 c: 3 }
with-env { FOO: ($foo | to json) } {
task spawn {
let foo = ($env.FOO | from json)
echo $foo
}
}
How can I reuse custom commands in a background task?
You can define these commands in a separate module, like so:
# --- in foo.nu ---
export def bar [] { echo bar }
# --- in main.nu ---
task spawn {
use foo.nu
foo bar
}
Troubleshooting
- On some setups (e.g. NixOS with
nu
installed as a binary in user's$HOME
),sh
(whichpueue
delegates tasks to run) might fail to findnu
in the$PATH
. In this case hard-coding the location of your nu binary in thetask spawn
function definition intask.nu
can solve the issue.