nu_scripts/custom-completions/auto-generate
Auca Coyan 13a73ab635
🐛 fix more parser errors (#783)
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`
2024-03-15 21:10:27 -05:00
..
completions 🐛 fix more parser errors (#783) 2024-03-15 21:10:27 -05:00
parse-fish.nu Replace use of $nothing with null (#621) 2023-09-26 18:52:49 +02:00
parse-help.nu replace occurences of str collect with str join (#436) 2023-04-03 08:47:25 -05:00
README.md autogenerate from Fish shell completions (#236) 2022-05-30 08:31:55 -05:00

auto-generate completions

  • basic helpers to parse --help information from cli commands and export nu completions source
  • basic helpers tp parse .fish complete files and export nu completions source

parse-fish

current

  • only parses out simple complete's with no complete's boolean arguments like -f
  • does not map fish autocomplete helpers to nu-complete helps (a nu library of autocomplete utils would be neat)

usage

be in a directory with one or more .fish completion scripts

A good one is

git clone https://github.com/fish-shell/fish-shell cd fish-shell/share/completions

To build all .fish files in the current directory build-completions-from-pwd

build-completions-from-pwd
ls *.nu

To build a single .fish file and choose the output file

build-completion cargo.fish cargo.nu

parse-help

current limitations

  • Only flags are parsed, arguments are not parsed and ...args is injected at the end to catch all
  • Some examples of --flags in descriptions can throw off the regex and get included in the parsed flags
  • <format> (types) to flags are parsed, but not added to the nu shell completion type hints

usage

generate and save source to a file

cargo --help | parse-help | make-completion cargo | save cargo.nu

example

This can be saved to a file and sourced. Example of output

extern "cargo" [
	--version(-V)		#Print version info and exit
	--list		#List installed commands
	--explain		#Run `rustc --explain CODE`
	--verbose(-v)		#Use verbose output (-vv very verbose/build.rs output)
	--quiet(-q)		#Do not print cargo log messages
	--color		#Coloring: auto, always, never
	--frozen		#Require Cargo.lock and cache are up to date
	--locked		#Require Cargo.lock is up to date
	--offline		#Run without accessing the network
	--config		#Override a configuration value (unstable)
	--help(-h)		#Print help information
	...args
]

extern "nu" [
	--help(-h)		#Display this help message
	--stdin		#redirect the stdin
	--login(-l)		#start as a login shell
	--interactive(-i)		#start as an interactive shell
	--version(-v)		#print the version
	--perf(-p)		#start and print performance metrics during startup
	--testbin		#run internal test binary
	--commands(-c)		#run the given commands and then exit
	--config		#start with an alternate config file
	--env-config		#start with an alternate environment config file
	--log-level		#log level for performance logs
	--threads(-t)		#threads to use for parallel commands
	...args
]

Which outputs like so on tab completion for cargo --

 | cargo --
--color    Coloring: auto, always, never
--config   Override a configuration value (unstable)
--explain  Run `rustc --explain CODE`
--frozen   Require Cargo.lock and cache are up to date
--help     Display this help message
--help     Print help information
--list     List installed commands
--locked   Require Cargo.lock is up to date
--offline  Run without accessing the network
--quiet    Do not print cargo log messages
--verbose  Use verbose output (-vv very verbose/build.rs output)
--version  Print version info and exit