A place to share Nushell scripts with each other
Go to file
David Danier e4dbec663b
Support whitespace before target name for make completions (#858)
TL;DR: The "simple" example from
https://www.gnu.org/software/make/manual/html_node/Simple-Makefile.html
is currently not compatible with the custom completion script found in
`custom-completions/make/make-completions.nu`. This PR tries to fix
that.

As I was working on `nur` (https://github.com/ddanier/nur) and the
`nurify` script to convert to `nur` from different task runners
(https://github.com/ddanier/nur/blob/main/scripts/nurify.nu) I wanted to
create a good way to convert from using `make`. So I thought the `make`
completion would for sure implement a good way to get a list of all
possible `make` targets. Hence I started looking at
`custom-completions/make/make-completions.nu`.

Then I searched for a good documentation for how `Makefile`s work, as
the last time I was using this myself is about 5 to 10 years ago. If you
for example look at the documentation on gnu.org you may find examples
of `Makefile`s not working with the current autocompletion. See
https://www.gnu.org/software/make/manual/html_node/Simple-Makefile.html
for example, the "simple" example they provide.

The reason for this not working is that the targets use some whitespace
after the target name. This is somehow allowed and thus valid. See
https://www.gnu.org/software/make/manual/html_node/Rule-Introduction.html
for a quick overview about how the `Makefile`s syntax works. I quickly
checked this to ensure `make` actually parses this correctly, it really
does.

This means that the current `make` completion does miss support for the
"simple" example provided my `make` itself. So I went on to fix this.

My suggested solution is:
* Filter all lines by regex `'^[\w\.-]+\s*:'` to ensure possible targets
  - start with some word (also allowing `.` and `-`)
  - may have some whitespaces after the word
  - has ":" after this
* Split by the ":"
* Use first column
* Trim the remaining target name to remove those nasty whitespaces
* Use result for completion

For me this did fix the issue with the "simple" `Makefile`, allowing me
to put this into my `nurify` script.

Would be nice to get this "backported" to nu scripts as well. Might help
others 😉
2024-05-30 14:37:43 -05:00
.github/workflows Remove the failing CI on the main branch (#805) 2024-03-30 16:37:19 -05:00
aliases Add chezmoi aliases (#788) 2024-03-12 10:55:37 -05:00
assets use typos for corrections (#833) 2024-05-08 06:47:54 -05:00
before_v0.60/cool_oneliners Port before_v0.60/with_externals and cleanup (#852) 2024-05-26 16:34:36 -05:00
benchmarks fix removed commands (#645) 2023-10-19 19:35:23 +02:00
custom-completions Support whitespace before target name for make completions (#858) 2024-05-30 14:37:43 -05:00
custom-menus fix: adjust for nushell commandline syntax deprecation (#840) 2024-05-19 13:33:08 -05:00
example-config use typos for corrections (#833) 2024-05-08 06:47:54 -05:00
make_release Edit release notes template (#853) 2024-05-28 19:32:39 +00:00
modules Port before_v0.60/with_externals and cleanup (#852) 2024-05-26 16:34:36 -05:00
nu-hooks use typos for corrections (#833) 2024-05-08 06:47:54 -05:00
sourced Port before_v0.60/data_extraction before_v0.60/examples before_v0.60/duplicates (#847) 2024-05-26 12:37:29 -05:00
stdlib-candidate Port before_v0.60/stdlib_candidate (#850) 2024-05-26 07:49:03 -05:00
themes fix: adjust for nushell commandline syntax deprecation (#840) 2024-05-19 13:33:08 -05:00
.gitattributes Add Nushell Language detect for linguist (#532) 2023-06-21 11:36:01 +03:00
.gitignore fix regressions noted in 0.93.1 from 0.83: (#843) 2024-05-25 08:28:42 -05:00
LICENSE Initial commit 2021-01-23 07:33:45 +13:00
README.md Remove the failing CI on the main branch (#805) 2024-03-30 16:37:19 -05:00
toolkit.nu Refactor toolkit.nu (#791) 2024-03-15 19:17:31 +02:00
typos.toml use typos for corrections (#833) 2024-05-08 06:47:54 -05:00

Nushell Scripts

This is a place to share Nushell scripts with each other. If you'd like to share your scripts, fork this repository, and create a PR that adds it to the repo.

Sections

Running Scripts

You can run nushell scripts in a few different ways.

  1. You can type nu <script name>.
  2. From with nushell, you can type source <script name> and if the script is just a bunch of commands it will run the script. If the script is a custom command it will load those custom commands into your current scope so you can run them like any other command.