diff --git a/custom-completions/npm/npm-completions.nu b/custom-completions/npm/npm-completions.nu index 0195b18..41d61cf 100644 --- a/custom-completions/npm/npm-completions.nu +++ b/custom-completions/npm/npm-completions.nu @@ -1,11 +1,22 @@ def "nu-complete npm" [] { - ^npm -l - |lines - |find 'Run "' - |str trim - |split column -c ' ' - |get column4 - |str replace '"' '' + let db = stor open + + try { + # query commanders from in-mem db + $db | query db "SELECT * FROM npm_commanders_table" + } catch { + # if catched error, create table and insert all data + stor create --table-name npm_commanders_table --columns { value: str, description: str } + + let npm_commanders = ^npm -l + | lines + | where $it =~ '\s{4}[a-z\-]+.*\s{4,}' + | parse -r '\s*(?P[^ ]+)\s*(?P\w.*)' + + $npm_commanders | stor insert --table-name npm_commanders_table + + $npm_commanders + } } export extern "npm" [ @@ -14,8 +25,9 @@ export extern "npm" [ def "nu-complete npm run" [] { open ./package.json - |get scripts - |columns + | get scripts + | transpose + | rename value description } export extern "npm run" [