Here is a bunch of fixes I implemented to make Winget custom completion
script functional.
Namely,
- Made it compatible with the latest Nushell version
- Fixed parsing of Winget show command
- Added the missing command aliases
- Implemented a workaround for the in Winget itself when filtering for a
particular package source -
https://github.com/microsoft/winget-cli/issues/4236
What it says on the tin. This just updates the `bump-version.nu` script
to also edit the version in
the new nu_plugin_nu_example plugin, the same way it does for python
Implemented definitions for all composer 2.7 base commands with flags,
arguments, and descriptions. Also add completions when a set of values
is expected 🙂
I wasn't sure if this was on purpose or not but the conda environments
were simply "activate" and "deactivate" instead of "conda activate" and
"conda deactivate" as they would be normally in bash/zsh.
Due to the potential name conflicts I think it's better to leave these
as the more specific `conda activate` and let the user define an alias
in their file with `alias activate = conda activate`
Nushell 0.92 changed how external commands operate in pipelines:
https://www.nushell.sh/blog/2024-04-02-nushell_0_92_0.html
After updating to Nushell 0.92, panache-git would print errors when the
current working directory was not a Git repository: "fatal: not a git
repository (or any of the parent directories): .git"
This change properly handles stderr from Git commands according to
Nushell's updated external command behavior.
Also, Nushell 0.91 introduced "is-not-empty", so places in the code
where a string was checked for being not-empty or not-contains were
simplified a bit.
Finally, the main command in the module was renamed to "main" to make it
simpler to import and use in config.
I added the missing shims, alias, and help commands for the scoop
completer (#483)
I also updated the deprecated `rootPath` and `globalPath` config names
for the config command
the hook (did_you_mean.nu) had stopped working for me recently, I added
an if branch for Windows to use their `Path` env var (not `PATH`) and
only list files that match in the `PATHEXT` env var to resolve my issue
This adds a little command that allows opening .env files as records.
My implementation removes comments and works with both quoted and
unquoted .env files.
This PR adds two [`cargo hack`](https://github.com/taiki-e/cargo-hack)
commands to the release process to check for errors due to combination
of features. The first one will run `cargo check` on each crate multiple
times over, toggling different combinations of features each time. This
is to check for compilation errors regarding missing imports, etc. The
second command will run `cargo build` for each crate separately (with
default features) to check for build errors (from `build.rs` or
whatever).
Using the [error](https://github.com/nushell/nushell/pull/11786) from
the 0.90.0 publishing as a test, the first command does indeed find the
compilation error.
In the future, we should probably put these commands into a manually
triggered CI job so that they will be run on multiple platforms.
Also, this PR cleans up `nu_release.nu` a little bit.
See
https://github.com/nushell/nu_scripts/pull/771#issuecomment-2020331739
and following
As we don't have a path forward to make sure all files are fixed and
will be maintained. (and the file detection itself is reliable)
Disable the `main` branch (and nightly run) for now.
This will keep the CI for PRs so at least added scripts pass the current
nu version
[Generated diff](https://www.diffnow.com/report/xmq4f) for command
because move broke it.
- No `file` prefix similar to other [filesystem
commands](https://www.nushell.sh/commands/categories/filesystem.html)
- Input paths instead of directory param for filters or globbing
- Record closure param with original path (`$in` is still stem)
- `--verbose` table output
- `--no-exectute` for dry run with `--verbose`
- Shorthand flags
- Parallel renaming for large directories
- More tests
@amtoine Request feedback 🙏🏼 Happy to revise ot revert anything!
```console
❯ bulk-rename -h
Rename bulk input files in parallel using a closure.
The reason behind this command is quite simple:
- Sometimes one receives a bunch of files with integer ids: 1, 2, 3, ...
- These ids come rarely with padding... i.e. 1 instead of 001 when there are 3-digit ids
- This means that file with id 9 will be sorted way after file with id 1000
This command allows to do such a task!
Examples:
Rename `.mise.toml` files to `.mise.local.toml` recursively
> glob **/.mise.toml | bulk-rename { str append .local }
Rename files in `/foo` with a name that has an id to have 3 digits with 0-padding
> ls /foo | bulk-rename { |path|
if $path.input.type == file {
$path.stem | parse "some_format_{id}"
| get 0
| update id { fill --alignment r --character 0 --width 3 }
| $"some_format_($in.id)"
}
# else skip dirs
}
Usage:
> main {flags} <update_stem>
Flags:
-v, --verbose - Show which files were renamed, if any
-n, --no-execute - Do not make any changes; add --verbose to see what would be made
whitespace bug: nushell/nushell#12264
-h, --help - Display the help message for this command
Parameters:
update_stem <closure()>: The code to rename the file stem: receives the old stem as input and a record param with both `stem` and `input` keys
Input/output types:
╭───┬───────────┬─────────────────────────────────╮
│ # │ input │ output │
├───┼───────────┼─────────────────────────────────┤
│ 0 │ list<any> │ nothing │
│ 1 │ list<any> │ table<old: string, new: string> │
╰───┴───────────┴─────────────────────────────────╯
```
- new function `kube refine`
- define the required information in `$env.KUBERNETES_REFINE`, `kube
refine` will collect information according to its definition
- definitions in `status` and `cluster_status` are runtime information
and will not be collected. They are used in the `kg` command to display
status
- normalize the output of the `kg`, `kgp`, `kgs` command using `krefine`
- rename `kcconf` to `kccc` (kubectl change context clone)
- a new module, `refine.nu`, declaratively extracts data from complex
structures.
- `container-list` additionally displays the cmd field of the image
---------
Co-authored-by: nash <nash@iffy.me>
I initially tried to get Micromamba to work with Nushell by using the
script from [this
issue](https://github.com/nushell/nu_scripts/issues/578). But even after
fixing the syntax errors I couldn't activate any env.
With these modifications, Micromamba seems to be working fine.
Please note that I'm far from a Nu expert so my code might not be very
idiomatic. If that is the case please tell me so and I'll be happy to do
the necessary changes.
- Move to directory for other `str` contributions
- Add simple `help` docs
- Simplify type check since only 2 cases are possible
@savente93 Are these okay?
Easier to review individual commits because of renames. Happy to provide
DiffNow links if helpful. Involved:
1. Moving scripts to a subdirectory
2. Copying `nupm.nuon` from another directory
3. Making modules work
4. Extracting tests
5. Fixing tests (related to nushell/nushell#12193)
To test first set up nupm then:
```console
nu_scripts on std-nupm-integration
❯ $env.NUPM_REGISTRIES.nupm_test = 'https://raw.githubusercontent.com/texastoland/nupm/registry-std-rfc/registry.nuon'
nu_scripts on std-nupm-integration
❯ nupm install std-rfc
╭──────────┬───────────────────────────────────────────╮
│ name │ std-rfc │
│ version │ 0.1.0 │
│ url │ https://github.com/texastoland/nu_scripts │
│ revision │ 65aa7cc │
│ path │ stdlib-candidate │
│ type │ git │
╰──────────┴───────────────────────────────────────────╯
Cloning into 'nu_scripts-4a047f13a05fe35393f3a8d73377b02c-65aa7cc'...
remote: Enumerating objects: 8015, done.
remote: Counting objects: 100% (822/822), done.
remote: Compressing objects: 100% (333/333), done.
remote: Total 8015 (delta 538), reused 641 (delta 445), pack-reused 7193
Receiving objects: 100% (8015/8015), 49.72 MiB | 23.12 MiB/s, done.
Resolving deltas: 100% (4605/4605), done.
Note: switching to '65aa7cc'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 65aa7cc Fix nupm test --dir stdlib-candidate
2024-03-12T20:42:49.462|INF|installing package std-rfc
nu_scripts on std-nupm-integration took 4s
❯ use std-rfc set-env
nu_scripts on std-nupm-integration
❯ set-env -h
Gracefully set an environment variable or merge a nested option.
...etc.
nu_scripts on std-nupm-integration
❯ nupm test --dir stdlib-candidate
Testing package /Users/texas/Developer/nu_scripts/stdlib-candidate
tests record filter-name predicate ... SUCCESS
tests record filter-value predicate ... SUCCESS
tests record list_merge ... SUCCESS
tests str append ... SUCCESS
tests fs file bulk-rename ... SUCCESS
tests str prepend ... SUCCESS
tests record filter-name text ... SUCCESS
Ran 7 tests. 7 succeeded, 0 failed.
```
Hi! I reduced some of the errors in the daily CI. Still there are a few
of them, but at least is something
- Added the badge for the `daily.yml` (currently failing)
- removed old `docker` from v0.60
- removed old `git` from auto-generate completions
- removed `nethack` from auto-generate completions (wasn't very useful)
- removed `root` from auto-generate completions (wasn't very useful)
- removed `valgrind` from auto-generate completions (wasn't very useful)
- moved `less` from auto-generate to custom-completions.
- moved `mix` from auto-generate to custom-completions.
- moved `tar` from auto-generate to custom-completions.
- moved `tcpdump` from auto-generate to custom-completions.
- moved `virsh` from auto-generate to custom-completions.
- moved `zef` from auto-generate to custom-completions.
- fixed `base16.nu`
- fixed `from-cpuinfo.nu`
- fixed `from-dmicode.nu`
- fixed `to-number-format.nu`
- fixed `to-json-schema.nu`
Closes#789🍻
- Runs without first generating a script
- Returns error (file) count
- Requires `--and-exit` to exit with error code
- Enables alternative report with env `STUB_IDE_CHECK=true`
- Expands documentation
- All subcommands share same file querying
- Prepares for nupm test integration
I made a `toolkit.nu` with a very bare bones struct, this is called via
[`setup-nu`](https://github.com/hustcer/setup-nu) action, and generates
the `check-files.nu` file. After that, another nu instance run that
script to check files one by one. The folder `before_v0.60/` is
excluded.
Rewrite of nushell/nushell#12156 for jdx/mise#1763.
### Why?
Nushell philosophically omits a `set` list mutation. But `$env` is
inherently mutable leading to issues described in nushell/nushell#12148.
`set-env` provides such an operation exclusively for `$env`.
### What changed?
1. Explicit flag instead of implicit list concatenation
2. Expands updates to any `$env` field not only `$env.config`
### How is it used?
```yaml
❯ set-env -h
Gracefully set an environment variable or merge a nested option.
Examples:
Set $env.NUPM_HOME
> set-env NUPM_HOME $'($nu.home-path)/.local/share/nupm'
Add to $env.NU_LIB_DIRS
> set-env --append NU_LIB_DIRS $'($env.NUPM_HOME)/modules'
Set a nested config option
> set-env config.filesize.metric true
Add a config hook
> set-env -a config.hooks.pre_prompt 'ellie | print'
Usage:
> main {flags} <field> <value>
Flags:
-a, --append - Append to the previous value or wrap in a new list
-h, --help - Display the help message for this command
Parameters:
field <cell-path>: The environment variable name or nested option cell path
value <any>: The value to set or append
Input/output types:
╭───┬─────────┬─────────╮
│ # │ input │ output │
├───┼─────────┼─────────┤
│ 0 │ nothing │ nothing │
╰───┴─────────┴─────────╯
```
### How does it work?
```nushell
export def --env main [
field: cell-path
value: any
--append (-a)
]: nothing -> nothing {
# just an alias
def 'get or' [default field] {
get --ignore-errors $field | default $default
}
let value = if $append {
# append to the previous value or empty list
$env | get or [] $field | append $value
} else {
$value
}
# work around nushell/nushell#12168
let field = $field | to text | split row .
let value = match $field {
[_] => $value
# if cell path is nested
[$root, ..$field] => {
let field = $field | into cell-path
# reassigning $env would be an error
# merging reserved names like PWD would be an error
# so merge from 1 level deep instead
$env | get or {} $root | upsert $field $value
}
}
# avoid issues noted above
load-env { ($field | first): $value }
}
```
### Where are the tests?
Pending next PR for nupm integration.
This is some legwork to the CI
- [x] fix one `get-row.nu` before 0.60, just because it was easy
- [x] `modules/formats/to-ini.nu`
- [x] `modules/git/git-v2.nu`
- [x] `modules/git/git.nu`
- [x] `modules/log/log.nu`
- [x] `modules/weather/weatherdark.nu`
- [x] `sourced/api_wrappers/worlframalpha.nu`
- [x] `sourced/cool-oneliners/pwd-short.nu`
- [x] `sourced/github/branch-protections/branch-protections.nu`
- [x] `sourced/gitlab/gitlab.nu`
- [x] `sourced/misc/nu_defs.nu`
- [x] `sourced/update-path.nu`
- [x] `sourced/webscraping/shell_starts.nu`
I moved some auto-generated commands:
- [x] `ack`
- [x] `as`
- [x] `curl`
- [x] `fsarprc`
- [x] `fsarpri`
- [x] `godoc`
- [x] `mysql`
- [x] and `xgettext`
to custom, so we keep the modifications.
I had to comment some of the flags because the parser is not able to
parse some flags. Those are explained in comments
- `gb -d` cleans branches that meet the criteria, if no arguments
- not current
- merged
- `gb -d --no-merged` includes no merged branches
- `gb` (no arguments) output `merged` instead of `no-merged`
- changed `$remote` of `gb` and `gp` to flag
- `remote_branches` return 'remote/branch'
Co-authored-by: nash <nash@iffy.me>