mirror of
https://github.com/nushell/nushell.git
synced 2024-12-23 15:39:06 +01:00
6af59cb0ea
# Description this PR adds the `path add` command to `crates/nu-utils/standard_library/std.nu` - this comes from frequent questions over on the discord server, about how to add directories to the `PATH` - this is greatly inspired from the [original `path-add`](https://discord.com/channels/601130461678272522/615253963645911060/1081206660816699402) from @melMass - allows to prepend and append a variable number of directories to the `PATH` - i've added a description with an example - i've added tests in `crates/nu-utils/standard_library/tests.nu` that hopefully covers all the features # User-Facing Changes `path add` can now be used from `std.nu` # Tests + Formatting the tests pass with ```bash nu crates/nu-utils/standard_library/tests.nu ``` # After Submitting ```bash $nothing ``` |
||
---|---|---|
.. | ||
README.md | ||
std.nu | ||
tests.nu |
Welcome to the standard library of `nushell`!
The standard library is a pure-nushell
collection of commands to allow anyone to build
complex applications using standardized tools gathered incrementally.
In this library, you might find rust
-like assert
commands to write tests, tools to
manipulate paths and strings, etc, etc, ...
🧰 use the standard library in the REPL or in scripts
in order to "import" the standard library to either the interactive REPL of
nushell
or inside some .nu
script, you might want to use the
use
command!
use /path/to/standard_library/std.nu
🔍 a concrete example
- my name is @amtoine and i use the
ghq
tool to managegit
projects
Note
ghq
stores any repository inside$env.GHQ_ROOT
under<host>/<owner>/<repo>/
- the path to my local fork of
nushell
is then defined as
let-env NUSHELL_REPO = ($env.GHQ_ROOT | path join "github.com" "amtoine" "nushell")
- and the full path to the standard library is defined as
let-env STD_LIB = ($env.NUSHELL_REPO | path join "crates" "nu-utils" "standard_library")
see the content of
$env.STD_LIB
😋>_ ls $env.STD_LIB | get name | str replace $env.STD_LIB "" | str trim -l -c "/" ╭───┬───────────╮ │ 0 │ README.md │ │ 1 │ std.nu │ │ 2 │ tests.nu │ ╰───┴───────────╯
- finally we can
use
the standard library and have access to the commands it exposes 👍
>_ use std.nu
>_ help std
Module: std
Exported commands:
assert (std assert), assert eq (std assert eq), assert ne (std assert ne), match (std match)
This module does not export environment.
✏️ contribute to the standard library
🔧 add new commands
- add new standard commands to
std.nu
- add associated tests to
tests.nu
- define a new
test_<feature>
before themain
- import the
assert
functions you need at the top of the functions, e.g.use std.nu "assert eq"
- add a call to
test_<feature>
at the bottom of themain
- define a new
🧪 run the tests
the following call should return nothing
nu ($env.STD_LIB | path join "tests.nu")