nushell/crates
Steven Xu 1d3f6105f5
feat: add a command_not_found hook (#8314)
# Description
Add a `command_not_found` function to `$env.config.hooks`. If this
function outputs a string, then it's included in the `help`.

An example hook on *Arch Linux*, to find packages that contain the
binary, looks like:

```nushell
let-env config = {
  # ...
  hooks: {
    command_not_found: {
      |cmd_name| (
        try {
          let pkgs = (pkgfile --binaries --verbose $cmd_name)
          (
            $"(ansi $env.config.color_config.shape_external)($cmd_name)(ansi reset) " +
            $"may be found in the following packages:\n($pkgs)"
          )
        } catch {
          null
        }
      )
    }
    # ...
```

# User-Facing Changes
- Add a `command_not_found` function to `$env.config.hooks`.

# 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 -A
clippy::needless_collect` to check that you're using the standard code
style
- `cargo test --workspace` to check that all tests pass

# 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.
2023-03-20 17:05:22 +13:00
..
nu_plugin_custom_values bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu_plugin_example bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu_plugin_formats bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu_plugin_gstat bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu_plugin_inc bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu_plugin_python update nu_plugin_python due to signature changes (#8107) 2023-02-18 13:27:24 +00:00
nu_plugin_query bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-cli feat: add a command_not_found hook (#8314) 2023-03-20 17:05:22 +13:00
nu-cmd-lang Revert "Allow NU_LIBS_DIR and friends to be const" (#8501) 2023-03-17 09:33:24 -05:00
nu-color-config bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-command feat: add a command_not_found hook (#8314) 2023-03-20 17:05:22 +13:00
nu-engine Revert "Allow NU_LIBS_DIR and friends to be const" (#8501) 2023-03-17 09:33:24 -05:00
nu-explore bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-glob bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-json bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-parser Short redirection syntax (#8503) 2023-03-18 08:57:37 +13:00
nu-path bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-plugin bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-pretty-hex bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-protocol feat: add a command_not_found hook (#8314) 2023-03-20 17:05:22 +13:00
nu-system bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-table bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-term-grid bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-test-support bump to 0.77.2 (#8496) 2023-03-17 21:29:15 +13:00
nu-utils feat: add a command_not_found hook (#8314) 2023-03-20 17:05:22 +13: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.