nushell/crates
Darren Schroeder c09a8a5ec9
add a system level folder for future autoloading (#13180)
# Description

This PR adds a directory to the `$nu` constant that shows where the
system level autoload directory is located at. This folder is modifiable
at compile time with environment variables.
```rust
    // Create a system level directory for nushell scripts, modules, completions, etc
    // that can be changed by setting the NU_VENDOR_AUTOLOAD_DIR env var on any platform
    // before nushell is compiled OR if NU_VENDOR_AUTOLOAD_DIR is not set for non-windows 
    // systems, the PREFIX env var can be set before compile and used as PREFIX/nushell/vendor/autoload

    // pseudo code
    // if env var NU_VENDOR_AUTOLOAD_DIR is set, in any platform, use it
    // if not, if windows, use ALLUSERPROFILE\nushell\vendor\autoload
    // if not, if non-windows, if env var PREFIX is set, use PREFIX/share/nushell/vendor/autoload
    // if not, use the default /usr/share/nushell/vendor/autoload
```

### Windows default
```nushell
❯ $nu.vendor-autoload-dir
C:\ProgramData\nushell\vendor\autoload
```
### Non-Windows default
```nushell
❯ $nu.vendor-autoload-dir
/usr/local/share/nushell/vendor/autoload
```
### Non-Windows with PREFIX set
```nushell
❯ PREFIX=/usr/bob cargo r
❯ $nu.vendor-autoload-dir
/usr/bob/share/nushell/vendor/autoload
```
### Non-Windows with NU_VENDOR_AUTOLOAD_DIR set
```nushell
❯ NU_VENDOR_AUTOLOAD_DIR=/some/other/path/nushell/stuff cargo r
❯ $nu.vendor-autoload-dir
/some/other/path/nushell/stuff
```

> [!IMPORTANT] 
To be clear, this PR does not do the auto-loading, it just sets up the
folder to support that functionality that can be added in a later PR.
The PR also does not create the folder defined. It's just setting the
$nu constant.
 
# User-Facing Changes
<!-- List of all changes that impact the user experience here. This
helps us keep track of breaking changes. -->

# Tests + Formatting
<!--
Don't forget to add tests that cover your changes.

Make sure you've run and fixed any issues with these commands:

- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to
check that you're using the standard code style
- `cargo test --workspace` to check that all tests pass (on Windows make
sure to [enable developer
mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging))
- `cargo run -- -c "use toolkit.nu; toolkit test stdlib"` to run the
tests for the standard library

> **Note**
> from `nushell` you can also use the `toolkit` as follows
> ```bash
> use toolkit.nu # or use an `env_change` hook to activate it
automatically
> toolkit check pr
> ```
-->

# After Submitting
<!-- If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.
-->
2024-06-20 06:30:43 -05:00
..
nu_plugin_custom_values Add derive macros for FromValue and IntoValue to ease the use of Values in Rust code (#13031) 2024-06-17 16:05:11 -07:00
nu_plugin_example bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu_plugin_formats bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu_plugin_gstat Bump git2 from 0.18.3 to 0.19.0 (#13179) 2024-06-19 01:09:25 +00:00
nu_plugin_inc bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu_plugin_nu_example bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu_plugin_polars Allow the addition of an index column to be optional (#13097) 2024-06-10 10:45:25 +08:00
nu_plugin_python bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu_plugin_query Make query xml return nodes in document order (#13047) 2024-06-05 09:47:36 +08:00
nu_plugin_stress_internals bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-cli add a system level folder for future autoloading (#13180) 2024-06-20 06:30:43 -05:00
nu-cmd-base Improves commands that support range input (#13113) 2024-06-18 07:19:13 -05:00
nu-cmd-extra Make which-support feature non-optional (#13125) 2024-06-12 20:04:12 -05:00
nu-cmd-lang update try command's help (#13173) 2024-06-18 13:48:06 -05:00
nu-cmd-plugin bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-color-config Move most of the peculiar argument handling for external calls into the parser (#13089) 2024-06-19 21:00:03 -07:00
nu-command Move most of the peculiar argument handling for external calls into the parser (#13089) 2024-06-19 21:00:03 -07:00
nu-derive-value Add derive macros for FromValue and IntoValue to ease the use of Values in Rust code (#13031) 2024-06-17 16:05:11 -07:00
nu-engine Table help rendering (#13182) 2024-06-19 20:12:25 -05:00
nu-explore Improve performance of explore - 1 (#13116) 2024-06-12 18:35:04 -07:00
nu-glob bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-json bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-lsp bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-parser Move most of the peculiar argument handling for external calls into the parser (#13089) 2024-06-19 21:00:03 -07:00
nu-path add $nu.data-dir for completions and $nu.cache-dir for other uses (#13122) 2024-06-11 15:10:31 -04:00
nu-plugin bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-plugin-core bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-plugin-engine bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-plugin-protocol bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-plugin-test-support bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-pretty-hex bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-protocol add a system level folder for future autoloading (#13180) 2024-06-20 06:30:43 -05:00
nu-std Return an empty list when no std help --find results are found (#13160) 2024-06-15 12:27:55 -05:00
nu-system bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-table Improve performance of explore - 1 (#13116) 2024-06-12 18:35:04 -07:00
nu-term-grid bump version to 0.94.3 (#13055) 2024-06-05 06:52:40 +08:00
nu-test-support Move most of the peculiar argument handling for external calls into the parser (#13089) 2024-06-19 21:00:03 -07:00
nu-utils add $nu.data-dir for completions and $nu.cache-dir for other uses (#13122) 2024-06-11 15:10:31 -04:00
nuon Move most of the peculiar argument handling for external calls into the parser (#13089) 2024-06-19 21:00:03 -07:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

Nushell core libraries and plugins

These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.

Foundational libraries are split into two kinds of crates:

  • Core crates - those crates that work together to build the Nushell language engine
  • Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.

Plugins are likewise also split into two types:

  • Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
  • Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.