-
Notifications
You must be signed in to change notification settings - Fork 352
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: add zsh autocomplete setup and file permissions instructions to completion:install #6882
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: Dylan Spyer <[email protected]>
…o completion:install Co-authored-by: Dylan Spyer <[email protected]>
We decided not to modify file permissions on the user's behalf and instead output the |
]) | ||
.then((answer) => { | ||
if (answer['compinitAdded']) { | ||
fs.readFile(zshConfigFilepath, 'utf8', (err, data) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that we add the autoload -U compinit; compinit
line to the top of the ~/.zshrc
file (and not the bottom or right before the tabtab config line) because
- it needs to be run before the tabtab config line (
'[[ -f ~/.config/tabtab/__tabtab.zsh ]] && . ~/.config/tabtab/__tabtab.zsh || true'
) and - because compinit is also needed for other completions in general (besides netlify/tabtab) to work with zsh
log(`Completion for ${parent.name()} successfully installed!`) | ||
|
||
if (process.platform !== 'win32') { | ||
log("\nTo ensure proper functionality, you'll need to set appropriate file permissions.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because chmod
is a Unix command, we only output this instruction if the user is not on windows
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! Just a few changes that I've requested
const TABTAB_CONFIG_LINE = '[[ -f ~/.config/tabtab/__tabtab.zsh ]] && . ~/.config/tabtab/__tabtab.zsh || true' | ||
const AUTOLOAD_COMPINIT = 'autoload -U compinit; compinit' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Throw these in the constants file in this folder
await inquirer | ||
.prompt([ | ||
{ | ||
type: 'confirm', | ||
name: 'compinitAdded', | ||
message: `Would you like to add it?`, | ||
default: true, | ||
}, | ||
]) | ||
.then((answer) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally you wouldn't use await
and .then()
you would use one or the other. If you want it to be blocking use await
, if you want it to not be blocking use .then()
await inquirer | |
.prompt([ | |
{ | |
type: 'confirm', | |
name: 'compinitAdded', | |
message: `Would you like to add it?`, | |
default: true, | |
}, | |
]) | |
.then((answer) => { | |
const answer = await inquirer | |
.prompt([ | |
{ | |
type: 'confirm', | |
name: 'compinitAdded', | |
message: `Would you like to add it?`, | |
default: true, | |
}, | |
]) |
]) | ||
.then((answer) => { | ||
if (answer['compinitAdded']) { | ||
fs.readFile(zshConfigFilepath, 'utf8', (err, data) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would await this. So await fs.readFile or use fs.readFileSync.
try { | ||
filecontent = fs.readFileSync(filename, 'utf8') | ||
} catch (error_) { | ||
// @ts-expect-error TS(2571) FIXME: Object is of type 'unknown'. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull in the main branch to get updates from this PR #6877 to fix this type error
const TABTAB_CONFIG_LINE = '[[ -f ~/.config/tabtab/__tabtab.zsh ]] && . ~/.config/tabtab/__tabtab.zsh || true' | ||
const AUTOLOAD_COMPINIT = 'autoload -U compinit; compinit' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pull these from constants
when you make the change from above
🎉 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
:chmod +x
with the file path to the completion scriptautoload -U compinit; compinit
to the user’s~/.zshrc
file above the Tabtab config line to load and then runcompinit
This PR addresses both of these issues by:
chmod +x
command with the appropriate file path for the user to copy and run if needed after the installation is complete;autoload -U compinit; compinit
line 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 thecompinit -> ~/.zshrc
functionality.For us to review and ship your PR efficiently, please perform the following steps:
passes our tests.
A picture of a cute animal (not mandatory, but encouraged)