From de2829091f7297c9f7b6f30ee992d08f1066f2ca Mon Sep 17 00:00:00 2001 From: OJarrisonn_ Date: Thu, 6 Jun 2024 09:41:15 -0300 Subject: [PATCH] feat: updated rustup completions to use the new rustup help page style (#871) Rustup help page changed, so the commands that were based on the old layout to get the completions were broken Improved some completions to include a description like "default" or "installed" Also added completions for `rustup help` --- .../rustup/rustup-completions.nu | 71 ++++++++++++------- 1 file changed, 46 insertions(+), 25 deletions(-) diff --git a/custom-completions/rustup/rustup-completions.nu b/custom-completions/rustup/rustup-completions.nu index 04931181..cb107869 100644 --- a/custom-completions/rustup/rustup-completions.nu +++ b/custom-completions/rustup/rustup-completions.nu @@ -2,19 +2,19 @@ def "nu-complete rustup" [] { ^rustup --help - | str replace --regex --multiline '(rustup[\s\S]*(?=SUBCOMMANDS:))' '' - | str replace --regex --multiline '\n+DISCUSSION[\s\S]*' '' + | str replace --regex --multiline '(rustup[\s\S]*(?=Commands:))' '' + | str replace --regex --multiline '\n+Arguments:[\s\S]*' '' | lines - | where $it starts-with " " + | where $it starts-with " " | parse -r '\s*(?P[^ ]+) \s*(?P\w.*)' } def "nu-complete rustup toolchain" [] { ^rustup toolchain - | str replace --regex --multiline '(rustup[\s\S]*(?=SUBCOMMANDS:))' '' - | str replace --regex --multiline '\n+DISCUSSION[\s\S]*' '' + | str replace --regex --multiline '(rustup[\s\S]*(?=Commands:))' '' + | str replace --regex --multiline '\n+Options:[\s\S]*' '' | lines - | where $it starts-with " " + | where $it starts-with " " | parse -r '\s*(?P[^ ]+) \s*(?P\w.*)' } @@ -22,25 +22,34 @@ def "nu-complete rustup toolchain" [] { def "nu-complete rustup toolchain list" [] { ^rustup toolchain list | lines - | str replace " (default)" "" | append 'stable' | append 'beta' | append 'nightly' + | each { |line| if ($line | str contains "(default)") { + {value: ($line | str replace " (default)" ""), description: "default"} + } else { + {value: $line, description: ""} + } + } } def "nu-complete rustup target" [] { ^rustup target - | str replace --regex --multiline '(rustup[\s\S]*(?=SUBCOMMANDS:))' '' - | str replace --regex --multiline '\n+DISCUSSION[\s\S]*' '' + | str replace --regex --multiline '(rustup[\s\S]*(?=Commands:))' '' + | str replace --regex --multiline '\n+Options:[\s\S]*' '' | lines - | where $it starts-with " " + | where $it starts-with " " | parse -r '\s*(?P[^ ]+) \s*(?P\w.*)' } def "nu-complete rustup target list" [] { ^rustup target list | lines - | str replace " (installed)" "" + | each {|line| if ($line | str contains "installed") { + {value: ($line | str replace " (installed)" ""), description: "installed"} + } else { + {value: $line, description: ""} + }} } def "nu-complete rustup target list --installed" [] { @@ -51,22 +60,30 @@ def "nu-complete rustup target list --installed" [] { def "nu-complete rustup update" [] { ^rustup toolchain list | lines - | str replace " (default)" "" + | each {|line| if ($line | str contains "default") { + {value: ($line | str replace " (default)" ""), description: "default"} + } else { + {value: $line, description: ""} + }} } def "nu-complete rustup component" [] { ^rustup component - | str replace --regex --multiline '(rustup[\s\S]*(?=SUBCOMMANDS:))' '' - | str replace --regex --multiline '\n+DISCUSSION[\s\S]*' '' + | str replace --regex --multiline '(rustup[\s\S]*(?=Commands:))' '' + | str replace --regex --multiline '\n+Options:[\s\S]*' '' | lines - | where $it starts-with " " + | where $it starts-with " " | parse -r '\s*(?P[^ ]+) \s*(?P\w.*)' } def "nu-complete rustup component list" [] { ^rustup component list | lines - | str replace " (installed)" "" + | each {|line| if ($line | str contains "installed") { + {value: ($line | str replace " (installed)" ""), description: "installed"} + } else { + {value: $line, description: ""} + }} } def "nu-complete rustup component list installed" [] { @@ -77,10 +94,10 @@ def "nu-complete rustup component list installed" [] { def "nu-complete rustup override" [] { ^rustup override - | str replace --regex --multiline '(rustup[\s\S]*(?=SUBCOMMANDS:))' '' - | str replace --regex --multiline '\n+DISCUSSION[\s\S]*' '' + | str replace --regex --multiline '(rustup[\s\S]*(?=Commands:))' '' + | str replace --regex --multiline '\n+Options:[\s\S]*' '' | lines - | where $it starts-with " " + | where $it starts-with " " | parse -r '\s*(?P[^ ]+) \s*(?P\w.*)' } @@ -100,19 +117,19 @@ def "nu-complete rustup override list installed" [] { def "nu-complete rustup self" [] { ^rustup self - | str replace --regex --multiline '(rustup[\s\S]*(?=SUBCOMMANDS:))' '' - | str replace --regex --multiline '\n+DISCUSSION[\s\S]*' '' + | str replace --regex --multiline '(rustup[\s\S]*(?=Commands:))' '' + | str replace --regex --multiline '\n+Options:[\s\S]*' '' | lines - | where $it starts-with " " + | where $it starts-with " " | parse -r '\s*(?P[^ ]+) \s*(?P\w.*)' } def "nu-complete rustup set" [] { ^rustup set - | str replace --regex --multiline '(rustup[\s\S]*(?=SUBCOMMANDS:))' '' - | str replace --regex --multiline '\n+DISCUSSION[\s\S]*' '' + | str replace --regex --multiline '(rustup[\s\S]*(?=Commands:))' '' + | str replace --regex --multiline '\n+Options:[\s\S]*' '' | lines - | where $it starts-with " " + | where $it starts-with " " | parse -r '\s*(?P[^ ]+) \s*(?P\w.*)' } @@ -142,6 +159,10 @@ export extern "rustup" [ --version(-V) # Print version information ] +export extern "rustup help" [ + command?: string@"nu-complete rustup" +] + export extern "rustup update" [ command?: string@"nu-complete rustup update" --help(-h) # Print help information