{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":661794715,"defaultBranch":"main","name":"nushell","ownerLogin":"IanManske","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2023-07-03T17:00:43.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/34794997?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1718085012.0","currentOid":""},"activityList":{"items":[{"before":"514a1b0f727e561a417c7f34b42f0b4493556e74","after":"bfec1278b75d4dbabf7d61d2c2eff31e5fdca60a","ref":"refs/heads/typed-tagged-path-forms","pushedAt":"2024-06-15T03:32:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Fix infinite recursion converions","shortMessageHtmlLink":"Fix infinite recursion converions"}},{"before":"dda6a080bef1ee7e44003fe73e23f6e9b8225d65","after":"514a1b0f727e561a417c7f34b42f0b4493556e74","ref":"refs/heads/typed-tagged-path-forms","pushedAt":"2024-06-14T04:36:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Remove as_ref casting impls","shortMessageHtmlLink":"Remove as_ref casting impls"}},{"before":"71faefd21ebfbe457ec2c93bec57cd7068f7b1d4","after":"dda6a080bef1ee7e44003fe73e23f6e9b8225d65","ref":"refs/heads/typed-tagged-path-forms","pushedAt":"2024-06-14T03:29:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Fix symmetric equality and ordering impls","shortMessageHtmlLink":"Fix symmetric equality and ordering impls"}},{"before":"7da97bb01d4448908c3efb983168042bf2323021","after":"3dcdf89e640ec74e4874520b21526db66f642f5b","ref":"refs/heads/remove-which-support-feature","pushedAt":"2024-06-12T06:27:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Move `which` command binding to system section","shortMessageHtmlLink":"Move which command binding to system section"}},{"before":"feee1c5ec57d6a528c02ade7b0b7f43961196540","after":"71faefd21ebfbe457ec2c93bec57cd7068f7b1d4","ref":"refs/heads/typed-tagged-path-forms","pushedAt":"2024-06-12T05:15:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Reduce usages of unsafe","shortMessageHtmlLink":"Reduce usages of unsafe"}},{"before":"a780609e5f881f8be3ef7b06a441767d160df6ec","after":"feee1c5ec57d6a528c02ade7b0b7f43961196540","ref":"refs/heads/typed-tagged-path-forms","pushedAt":"2024-06-12T04:56:28.000Z","pushType":"push","commitsCount":15,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Merge branch 'main' into typed-tagged-path-forms","shortMessageHtmlLink":"Merge branch 'main' into typed-tagged-path-forms"}},{"before":"c09488f51580ac4208e300b27365ff3c4095ba4a","after":"63c863c81b5eb1f5318c6784bbd5528158cf7675","ref":"refs/heads/main","pushedAt":"2024-06-12T04:43:18.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Bump actions-rust-lang/setup-rust-toolchain from 1.8.0 to 1.9.0 (#13132)\n\nBumps\r\n[actions-rust-lang/setup-rust-toolchain](https://github.com/actions-rust-lang/setup-rust-toolchain)\r\nfrom 1.8.0 to 1.9.0.\r\n
\r\nRelease notes\r\n

Sourced from actions-rust-lang/setup-rust-toolchain's\r\nreleases.

\r\n
\r\n

v1.9.0

\r\n\r\n
\r\n
\r\n
\r\nChangelog\r\n

Sourced from actions-rust-lang/setup-rust-toolchain's\r\nchangelog.

\r\n
\r\n

[1.9.0] - 2024-06-08

\r\n\r\n
\r\n
\r\n
\r\nCommits\r\n\r\n
\r\n
\r\n\r\n\r\n[![Dependabot compatibility\r\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions-rust-lang/setup-rust-toolchain&package-manager=github_actions&previous-version=1.8.0&new-version=1.9.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\r\n\r\nDependabot will resolve any conflicts with this PR as long as you don't\r\nalter it yourself. You can also trigger a rebase manually by commenting\r\n`@dependabot rebase`.\r\n\r\n[//]: # (dependabot-automerge-start)\r\n[//]: # (dependabot-automerge-end)\r\n\r\n---\r\n\r\n
\r\nDependabot commands and options\r\n
\r\n\r\nYou can trigger Dependabot actions by commenting on this PR:\r\n- `@dependabot rebase` will rebase this PR\r\n- `@dependabot recreate` will recreate this PR, overwriting any edits\r\nthat have been made to it\r\n- `@dependabot merge` will merge this PR after your CI passes on it\r\n- `@dependabot squash and merge` will squash and merge this PR after\r\nyour CI passes on it\r\n- `@dependabot cancel merge` will cancel a previously requested merge\r\nand block automerging\r\n- `@dependabot reopen` will reopen this PR if it is closed\r\n- `@dependabot close` will close this PR and stop Dependabot recreating\r\nit. You can achieve the same result by closing it manually\r\n- `@dependabot show ignore conditions` will show all\r\nof the ignore conditions of the specified dependency\r\n- `@dependabot ignore this major version` will close this PR and stop\r\nDependabot creating any more for this major version (unless you reopen\r\nthe PR or upgrade to it yourself)\r\n- `@dependabot ignore this minor version` will close this PR and stop\r\nDependabot creating any more for this minor version (unless you reopen\r\nthe PR or upgrade to it yourself)\r\n- `@dependabot ignore this dependency` will close this PR and stop\r\nDependabot creating any more for this dependency (unless you reopen the\r\nPR or upgrade to it yourself)\r\n\r\n\r\n
\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Bump actions-rust-lang/setup-rust-toolchain from 1.8.0 to 1.9.0 (nush…"}},{"before":"f4fd929106ab4b697b1ba7652cf2fbd4aec8dd7d","after":"7da97bb01d4448908c3efb983168042bf2323021","ref":"refs/heads/remove-which-support-feature","pushedAt":"2024-06-11T06:17:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Remove old/unused `extra` feature","shortMessageHtmlLink":"Remove old/unused extra feature"}},{"before":"78af8f244876d97feb9f3921303188fce45b8b2d","after":"f4fd929106ab4b697b1ba7652cf2fbd4aec8dd7d","ref":"refs/heads/remove-which-support-feature","pushedAt":"2024-06-11T05:59:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Remove old/unused `extra` feature","shortMessageHtmlLink":"Remove old/unused extra feature"}},{"before":null,"after":"78af8f244876d97feb9f3921303188fce45b8b2d","ref":"refs/heads/remove-which-support-feature","pushedAt":"2024-06-11T05:50:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Remove old/unused `extra` feature","shortMessageHtmlLink":"Remove old/unused extra feature"}},{"before":null,"after":"19cfaf0525df0f2a644b3957aca88f8ede1fb49d","ref":"refs/heads/str-contains-not-removal","pushedAt":"2024-06-11T04:57:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Remove deprecated `--not` flag on `str contains`","shortMessageHtmlLink":"Remove deprecated --not flag on str contains"}},{"before":"5ac3ad61c42c9c97952a5df11d79e69ffcde73db","after":"c09488f51580ac4208e300b27365ff3c4095ba4a","ref":"refs/heads/main","pushedAt":"2024-06-11T04:33:37.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Fix multiple issues with `def --wrapped` help example (#13123)\n\n# Description\r\n\r\nI've noticed this several times but kept forgetting to fix it:\r\n\r\nThe example given for `help def` for the `--wrapped` flag is:\r\n\r\n```nu\r\nDefine a custom wrapper for an external command\r\n> def --wrapped my-echo [...rest] { echo $rest }; my-echo spam\r\n ╭───┬──────╮\r\n │ 0 │ spam │\r\n ╰───┴──────╯\r\n```\r\n\r\nThat's ... odd, since (a) it specifically says *\"for an external\"*\r\ncommand, and yet uses (and shows the output from) the builtin `echo`.\r\nAlso, (b) I believe `--wrapped` is *only* applicable to external\r\ncommands. Finally, (c) the `my-echo spam` doesn't even demonstrate a\r\nwrapped argument.\r\n\r\nUnless I'm truly missing something, the example just makes no sense.\r\n\r\nThis updates the example to really demonstrate `def --wrapped` with the\r\n*external* version of `^echo`. It uses the `-e` command to interpret the\r\nescape-tab character in the string.\r\n\r\n```nu\r\n> def --wrapped my-echo [...rest] { ^echo ...$rest }; my-echo -e 'spam\\tspam'\r\nspam spam\r\n```\r\n\r\n# User-Facing Changes\r\n\r\nHelp example only.\r\n\r\n# Tests + Formatting\r\n\r\n- :green_circle: `toolkit fmt`\r\n- :green_circle: `toolkit clippy`\r\n- :green_circle: `toolkit test`\r\n- :green_circle: `toolkit test stdlib`\r\n\r\n# After Submitting\r\n","shortMessageHtmlLink":"Fix multiple issues with def --wrapped help example (nushell#13123)"}},{"before":"46588178ef9575872f745632433284bd50dd1a5e","after":"f29f4bd2c0cea32ea53b99c53c29e6fa5a3d0398","ref":"refs/heads/path-type-null-error","pushedAt":"2024-06-10T03:55:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Fix typo","shortMessageHtmlLink":"Fix typo"}},{"before":"71d162c5d82a6ced5260494feaa9c76e27530625","after":"260e8aedc146e90d3f7ca7fb89cf19a06438824f","ref":"refs/heads/sys-removal","pushedAt":"2024-06-10T03:38:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Move relevant parts of mod.rs to `sys` subcommands","shortMessageHtmlLink":"Move relevant parts of mod.rs to sys subcommands"}},{"before":null,"after":"71d162c5d82a6ced5260494feaa9c76e27530625","ref":"refs/heads/sys-removal","pushedAt":"2024-06-10T03:17:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Remove old `sys` command","shortMessageHtmlLink":"Remove old sys command"}},{"before":"0bc27223ca9a5b3f9ce3b6c65005407a59dd158e","after":"a780609e5f881f8be3ef7b06a441767d160df6ec","ref":"refs/heads/typed-tagged-path-forms","pushedAt":"2024-06-10T02:18:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Add docs for `PathBuf` methods","shortMessageHtmlLink":"Add docs for PathBuf methods"}},{"before":"f3cf693ec701ab3086f984a8aeadfc9b50fadd90","after":"5ac3ad61c42c9c97952a5df11d79e69ffcde73db","ref":"refs/heads/main","pushedAt":"2024-06-10T02:17:49.000Z","pushType":"push","commitsCount":39,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Extend functionality of tango benchmark helpers (#13107)\n\n\r\n\r\n# Description\r\n\r\n\r\nRefactors the tango helpers in the toolkit and makes them more flexible\r\n(e.g., being able to benchmark any branch against any branch, not just\r\ncurrent and main).\r\n\r\n# User-Facing Changes\r\n\r\n\r\n# Tests + Formatting\r\n\r\n\r\n# After Submitting\r\n","shortMessageHtmlLink":"Extend functionality of tango benchmark helpers (nushell#13107)"}},{"before":"8b1c621107c6247ac875acfa836c54eb929dfd43","after":"5920dfe955542ce8e914f5ae084aada5048b3446","ref":"refs/heads/parse-disallow-byte-streams","pushedAt":"2024-05-30T23:44:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Update tests","shortMessageHtmlLink":"Update tests"}},{"before":"63dc0dccba70c402beb34cb864182738110b0852","after":"8b1c621107c6247ac875acfa836c54eb929dfd43","ref":"refs/heads/parse-disallow-byte-streams","pushedAt":"2024-05-30T23:39:31.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Update tests","shortMessageHtmlLink":"Update tests"}},{"before":null,"after":"63dc0dccba70c402beb34cb864182738110b0852","ref":"refs/heads/parse-disallow-byte-streams","pushedAt":"2024-05-30T23:26:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Add examples","shortMessageHtmlLink":"Add examples"}},{"before":"31f3d2f6642b585f0d88192724723bf0ce330ecf","after":"f3cf693ec701ab3086f984a8aeadfc9b50fadd90","ref":"refs/heads/main","pushedAt":"2024-05-30T20:16:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Disallow more characters in arguments for internal `cmd` commands (#13009)\n\n# Description\r\nMakes `run-external` error if arguments to `cmd.exe` internal commands\r\ncontain newlines or a percent sign. This is because the percent sign can\r\nexpand environment variables, potentially? allowing command injection.\r\nNewlines I think will truncate the rest of the arguments and should\r\nprobably be disallowed to be safe.\r\n\r\n# After Submitting\r\n- If the user calls `cmd.exe` directly, then this bypasses our\r\nhandling/checking for internal `cmd` commands. Instead, we use the\r\nhandling from the Rust std lib which, in this case, does not do special\r\nhandling and is potentially unsafe. Then again, it could be the user's\r\nspecific intention to run `cmd` with whatever trusted input. The problem\r\nis that since we use the std lib handling, it assumes the exe uses the C\r\nruntime escaping rules and will perform some unwanted escaping. E.g., it\r\nwill add backslashes to the quotes in `cmd echo /c '\"\"'`.\r\n- If `cmd` is called indirectly via a `.bat` or `.cmd` file, then we use\r\nthe Rust std lib which has separate handling for bat files that should\r\nbe safe, but will reject some inputs.\r\n- ~~I'm not sure how we handle `PATHEXT`, that can also cause a file\r\nwithout an extension to be run as a bat file. If so, I don't know where\r\nthe handling, if any, is done for that.~~ It looks like we use the\r\n`which` crate to do the lookup using `PATHEXT`. Then, we pass the exe\r\npath from that to the Rust std lib `Command`, which should be safe\r\n(except for the first `cmd.exe` note).\r\n\r\nSo, in the future we need to unify and/or fix these different\r\nimplementations, including our own special handling for internal `cmd`\r\ncommands that this PR tries to fix.","shortMessageHtmlLink":"Disallow more characters in arguments for internal cmd commands (nu…"}},{"before":"5523395a0f4857559832f91807acfd0071b69d2e","after":"46588178ef9575872f745632433284bd50dd1a5e","ref":"refs/heads/path-type-null-error","pushedAt":"2024-05-30T20:16:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Cleanup","shortMessageHtmlLink":"Cleanup"}},{"before":"a952fd8537015665c6995cb5f2ec05f88432db09","after":"5523395a0f4857559832f91807acfd0071b69d2e","ref":"refs/heads/path-type-null-error","pushedAt":"2024-05-30T18:44:26.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Merge branch 'main' into path-type-null-error","shortMessageHtmlLink":"Merge branch 'main' into path-type-null-error"}},{"before":"0e1553026e69adec2207d259d8513764deb5f87c","after":"31f3d2f6642b585f0d88192724723bf0ce330ecf","ref":"refs/heads/main","pushedAt":"2024-05-30T18:43:40.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Restore `path type` behavior (#13006)\n\n# Description\r\nRestores `path type` to return an empty string on error like it did pre\r\n0.94.0.","shortMessageHtmlLink":"Restore path type behavior (nushell#13006)"}},{"before":"525f5d0f52bfe15db131bc85a388a2603e0a0150","after":"62a1d38b92f0d2396f689f83e5503a24b98c8067","ref":"refs/heads/raw-arg-partial-fix","pushedAt":"2024-05-30T18:19:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Restore removed comment","shortMessageHtmlLink":"Restore removed comment"}},{"before":"f2202e0ae84919be9e844fd237a1fddc0be8f304","after":"525f5d0f52bfe15db131bc85a388a2603e0a0150","ref":"refs/heads/raw-arg-partial-fix","pushedAt":"2024-05-30T18:18:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Fix typo","shortMessageHtmlLink":"Fix typo"}},{"before":null,"after":"f2202e0ae84919be9e844fd237a1fddc0be8f304","ref":"refs/heads/raw-arg-partial-fix","pushedAt":"2024-05-30T17:53:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Disallow more characters in cmd args","shortMessageHtmlLink":"Disallow more characters in cmd args"}},{"before":null,"after":"a952fd8537015665c6995cb5f2ec05f88432db09","ref":"refs/heads/path-type-null-error","pushedAt":"2024-05-30T13:21:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Return null if file doesn't exist and bubble up other errors","shortMessageHtmlLink":"Return null if file doesn't exist and bubble up other errors"}},{"before":null,"after":"b15c63d09c627bf00c2587a30b9869899772020b","ref":"refs/heads/path-type-restoration","pushedAt":"2024-05-30T13:21:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Restore `path type` behavior","shortMessageHtmlLink":"Restore path type behavior"}},{"before":"f3991f2080284eadaec5a29b92def5bdf8d41248","after":"0e1553026e69adec2207d259d8513764deb5f87c","ref":"refs/heads/main","pushedAt":"2024-05-30T13:06:16.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"IanManske","name":"Ian Manske","path":"/IanManske","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34794997?s=80&v=4"},"commit":{"message":"Restore tilde expansion on external command names (#13001)\n\n# Description\r\n\r\nFix a regression introduced by #12921, where tilde expansion was no\r\nlonger done on the external command name, breaking things like\r\n\r\n```nushell\r\n> ~/.cargo/bin/exa\r\n```\r\n\r\nThis properly handles quoted strings, so they don't expand:\r\n\r\n```nushell\r\n> ^\"~/.cargo/bin/exa\"\r\nError: nu::shell::external_command\r\n\r\n × External command failed\r\n ╭─[entry #1:1:2]\r\n 1 │ ^\"~/.cargo/bin/exa\"\r\n · ─────────┬────────\r\n · ╰── Command `~/.cargo/bin/exa` not found\r\n ╰────\r\n help: `~/.cargo/bin/exa` is neither a Nushell built-in or a known external command\r\n\r\n```\r\n\r\nThis required a change to the parser, so the command name is also parsed\r\nin the same way the arguments are - i.e. the quotes on the outside\r\nremain in the expression. Hopefully that doesn't break anything else. 🤞\r\n\r\nFixes #13000. Should include in patch release 0.94.1\r\n\r\ncc @YizhePKU\r\n\r\n# User-Facing Changes\r\n- Tilde expansion now works again for external commands\r\n- The `command` of `run-external` will now have its quotes removed like\r\nthe other arguments if it is a literal string\r\n- The parser is changed to include quotes in the command expression of\r\n`ExternalCall` if they were present\r\n\r\n# Tests + Formatting\r\nI would like to add a regression test for this, but it's complicated\r\nbecause we need a well-known binary within the home directory, which\r\njust isn't a thing. We could drop one there, but that's kind of a bad\r\nbehavior for a test to do. I also considered changing the home directory\r\nfor the test, but that's so platform-specific - potentially could get it\r\nworking on specific platforms though. Changing `HOME` env on Linux\r\ndefinitely works as far as tilde expansion works.\r\n\r\n- :green_circle: `toolkit fmt`\r\n- :green_circle: `toolkit clippy`\r\n- :green_circle: `toolkit test`\r\n- :green_circle: `toolkit test stdlib`","shortMessageHtmlLink":"Restore tilde expansion on external command names (nushell#13001)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEZf0VwQA","startCursor":null,"endCursor":null}},"title":"Activity · IanManske/nushell"}