fix: add zsh autocomplete setup and file permissions instructions to completion:install
π Thanks for submitting a pull request! π
Summary
Fixes Completions don't work
There are at least two issues that might cause completions to fail after running completion:install:
- On Linux/MacOS, the completion script may not have the necessary executable permissions.
-
Fix: Run
chmod +xwith the file path to the completion script
- Netlify uses Tabtab for completions, and with zsh, Tabtab (and other) completions do not work until compinit has been run.
-
Fix: Add the line
autoload -U compinit; compinitto the userβs~/.zshrcfile above the Tabtab config line to load and then runcompinit
This PR addresses both of these issues by:
- automatically outputting the
chmod +xcommand with the appropriate file path for the user to copy and run if needed after the installation is complete; - prompting the user to have the
autoload -U compinit; compinitline added to the top of their .zshrc file automatically if not already present.
Here's what the netlify completion:install output looks like before:
Here's what the netlify completion:install output looks like after our changes:
This PR also creates a new test file for completion:install with tests for the compinit -> ~/.zshrc functionality.
For us to review and ship your PR efficiently, please perform the following steps:
- [ ] Open a bug/issue before writing your code π§βπ». This ensures we can discuss the changes and get feedback from everyone that should be involved. If you`re fixing a typo or something that`s on fire π₯ (e.g. incident related), you can skip this step.
- [ ] Read the contribution guidelines π. This ensures your code follows our style guide and passes our tests.
- [ ] Update or add tests (if any source code was changed or added) π§ͺ
- [ ] Update or add documentation (if features were changed or added) π
- [ ] Make sure the status checks below are successful β
A picture of a cute animal (not mandatory, but encouraged)
We decided not to modify file permissions on the user's behalf and instead output the chmod command for the user to run manually. This ensures that the user maintains ownership of their security and configuration settings.