From f394c2819e047f6fd3783551fb93699c9b08a8d9 Mon Sep 17 00:00:00 2001 From: Eschryn <8217655+Eschryn@users.noreply.github.com> Date: Tue, 29 Mar 2022 00:47:22 +0200 Subject: [PATCH] [completions-cargo] complete targets from cargo metadata (#194) * complete targets from cargo metadata for more precise completions we probably should use cargo metadata to get the available targets * fix typo --- custom-completions/cargo/cargo-completions.nu | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/custom-completions/cargo/cargo-completions.nu b/custom-completions/cargo/cargo-completions.nu index 57ed2d4..ba1c075 100644 --- a/custom-completions/cargo/cargo-completions.nu +++ b/custom-completions/cargo/cargo-completions.nu @@ -1,18 +1,10 @@ ## Written by lukexor -def "nu-complete cargo bins" [] { - let $bins = (ls src | where name =~ bin | each { |f| ls -s $f.name } | flatten | where name =~ .rs || type == dir) - if ($bins | length) > 0 { - echo $bins | upsert name { |file| $file.name | str find-replace ".rs" "" } | get name - } -} - -def "nu-complete cargo examples" [] { - let $examples = (ls | where name =~ examples | each { |f| ls -s $f.name } | flatten | where name =~ .rs || type == dir) - if ($examples | length) > 0 { - echo $examples | upsert name { |file| $file.name | str find-replace ".rs" "" } | get name - } +def "nu-complete cargo targets" [type: string] { + cargo metadata --format-version=1 --offline --no-deps | from json | get packages.targets | flatten | where ($type in $it.kind) | get name } +def "nu-complete cargo bins" [] { nu-complete cargo targets bin } +def "nu-complete cargo examples" [] { nu-complete cargo targets example } def "nu-complete cargo packages" [] { let metadata = (cargo metadata --format-version=1 --offline --no-deps)