mirror of
https://github.com/nushell/nushell
synced 2024-12-28 14:03:09 +00:00
255 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
Michael Angerman
|
f8d2bff283
|
cratification: Example support (#8231)
# Description When the crate nu_cmd_lang crate was created last week example_test.rs was copied over from nu_command to nu_cmd_lang. By doing this there was a set of methods in example_test.rs that existed in both crates... This PR removes the redundancy by moving all of those duplicated methods into the crate nu_test_support in a newly created file called example_support.rs _(Thank you for improving Nushell. Please, check our [contributing guide](../CONTRIBUTING.md) and talk to the core team before making major changes.)_ _(Description of your pull request goes here. **Provide examples and/or screenshots** if your changes affect the user experience.)_ # 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 -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. |
||
Jakub Žádník
|
a3f817d71b
|
Re-implement aliases (#8123)
# Description This PR adds an alternative alias implementation. Old aliases still work but you need to use `old-alias` instead of `alias`. Instead of replacing spans in the original code and re-parsing, which proved to be extremely error-prone and a constant source of panics, the new implementation creates a new command that references the old command. Consider the new alias defined as `alias ll = ls -l`. The parser creates a new command called `ll` and remembers that it is actually a `ls` command called with the `-l` flag. Then, when the parser sees the `ll` command, it will translate it to `ls -l` and passes to it any parameters that were passed to the call to `ll`. It works quite similar to how known externals defined with `extern` are implemented. The new alias implementation should work the same way as the old aliases, including exporting from modules, referencing both known and unknown externals. It seems to preserve custom completions and pipeline metadata. It is quite robust in most cases but there are some rough edges (see later). Fixes https://github.com/nushell/nushell/issues/7648, https://github.com/nushell/nushell/issues/8026, https://github.com/nushell/nushell/issues/7512, https://github.com/nushell/nushell/issues/5780, https://github.com/nushell/nushell/issues/7754 No effect: https://github.com/nushell/nushell/issues/8122 (we might revisit the completions code after this PR) Should use custom command instead: https://github.com/nushell/nushell/issues/6048 # User-Facing Changes Since aliases are now basically commands, it has some new implications: 1. `alias spam = "spam"` (requires command call) * **workaround**: use `alias spam = echo "spam"` 2. `def foo [] { 'foo' }; alias foo = ls -l` (foo defined more than once) * **workaround**: use different name (commands also have this limitation) 4. `alias ls = (ls | sort-by type name -i)` * **workaround**: Use custom command. _The common issue with this is that it is currently not easy to pass flags through custom commands and command referencing itself will lead to stack overflow. Both of these issues are meant to be addressed._ 5. TODO: Help messages, `which` command, `$nu.scope.aliases`, etc. * Should we treat the aliases as commands or should they be separated from regular commands? 6. Needs better error message and syntax highlight for recursed alias (`alias f = f`) 7. Can't create alias with the same name as existing command (`alias ls = ls -a`) * Might be possible to add support for it (not 100% sure) 8. Standalone `alias` doesn't list aliases anymore 9. Can't alias parser keywords (e.g., stuff like `alias ou = overlay use` won't work) * TODO: Needs a better error message when attempting to do so # 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. |
||
dependabot[bot]
|
6ca07b87b9
|
Bump sysinfo from 0.27.7 to 0.28.0 (#8237)
Bumps [sysinfo](https://github.com/GuillaumeGomez/sysinfo) from 0.27.7 to 0.28.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md">sysinfo's changelog</a>.</em></p> <blockquote> <h1>0.28.0</h1> <ul> <li>Linux: Fix name and CPU usage for processes tasks.</li> <li>unix: Keep all users, even "not real" accounts.</li> <li>Windows: Use SID for Users ID.</li> <li>Fix C API.</li> <li>Disable default cdylib compilation.</li> <li>Add <code>serde</code> feature to enable serialization.</li> <li>Linux: Handle <code>Idle</code> state in <code>ProcessStatus</code>.</li> <li>Linux: Add brand and name of ARM CPUs.</li> </ul> <h1>0.27.8</h1> <ul> <li>macOS: Fix overflow when computing CPU usage.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/GuillaumeGomez/sysinfo/commits">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sysinfo&package-manager=cargo&previous-version=0.27.7&new-version=0.28.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
Antoine Stevan
|
680405e527
|
REFACTOR: format some example commands (#8223)
hellord 👋 😋 # Description this PR fixes the format of a few single-line examples and the indentation of some multi-line examples - single-line example formatting - `compact` - multi-line example indentation - `update cells` - `error make - `split-by` # User-Facing Changes - `compact` from ```bash Examples: Filter out all records where 'Hello' is null (returns nothing) > [["Hello" "World"]; [null 3]]| compact Hello Filter out all records where 'World' is null (Returns the table) > [["Hello" "World"]; [null 3]]| compact World ``` to ```bash Examples: Filter out all records where 'Hello' is null (returns nothing) > [["Hello" "World"]; [null 3]] | compact Hello Filter out all records where 'World' is null (Returns the table) > [["Hello" "World"]; [null 3]] | compact World ``` - `update cells` from ```bash Examples: Update the zero value cells to empty strings. > [ ["2021-04-16", "2021-06-10", "2021-09-18", "2021-10-15", "2021-11-16", "2021-11-17", "2021-11-18"]; [ 37, 0, 0, 0, 37, 0, 0] ] | update cells { |value| if $value == 0 { "" } else { $value } } Update the zero value cells to empty strings in 2 last columns. > [ ["2021-04-16", "2021-06-10", "2021-09-18", "2021-10-15", "2021-11-16", "2021-11-17", "2021-11-18"]; [ 37, 0, 0, 0, 37, 0, 0] ] | update cells -c ["2021-11-18", "2021-11-17"] { |value| if $value == 0 { "" } else { $value } } ``` to ```bash Examples: Update the zero value cells to empty strings. > [ ["2021-04-16", "2021-06-10", "2021-09-18", "2021-10-15", "2021-11-16", "2021-11-17", "2021-11-18"]; [ 37, 0, 0, 0, 37, 0, 0] ] | update cells { |value| if $value == 0 { "" } else { $value } } Update the zero value cells to empty strings in 2 last columns. > [ ["2021-04-16", "2021-06-10", "2021-09-18", "2021-10-15", "2021-11-16", "2021-11-17", "2021-11-18"]; [ 37, 0, 0, 0, 37, 0, 0] ] | update cells -c ["2021-11-18", "2021-11-17"] { |value| if $value == 0 { "" } else { $value } } ``` - `split-by` from ```bash Examples: split items by column named "lang" > { '2019': [ { name: 'andres', lang: 'rb', year: '2019' }, { name: 'jt', lang: 'rs', year: '2019' } ], '2021': [ { name: 'storm', lang: 'rs', 'year': '2021' } ] } | split-by lang ``` to ```bash Examples: split items by column named "lang" > { '2019': [ { name: 'andres', lang: 'rb', year: '2019' }, { name: 'jt', lang: 'rs', year: '2019' } ], '2021': [ { name: 'storm', lang: 'rs', 'year': '2021' } ] } | split-by lang ``` - `error make` from ```bash Examples: Create a custom error for a custom command > def foo [x] { let span = (metadata $x).span; error make {msg: "this is fishy", label: {text: "fish right here", start: $span.start, end: $span.end } } } Create a simple custom error for a custom command > def foo [x] { error make {msg: "this is fishy"} } ``` to ```bash Examples: Create a custom error for a custom command > def foo [x] { let span = (metadata $x).span; error make {msg: "this is fishy", label: {text: "fish right here", start: $span.start, end: $span.end } } } Create a simple custom error for a custom command > def foo [x] { error make {msg: "this is fishy"} } ``` # Tests + Formatting no tests have been changed => this is a pure formatting PR - ✔️ `cargo fmt --all` - ✔️ `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect` - ✔️ `cargo test --workspace` # After Submitting need to change the book? 🤔 |
||
Michael Angerman
|
585e104608
|
Cratification: Break out nu_cmd_lang into a separate crate (#8181)
# Description This breaks out the core_commands into a separate crate called nu_cmd_lang _(Thank you for improving Nushell. Please, check our [contributing guide](../CONTRIBUTING.md) and talk to the core team before making major changes.)_ _(Description of your pull request goes here. **Provide examples and/or screenshots** if your changes affect the user experience.)_ # 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 -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. |