Last active
August 15, 2024 23:41
-
-
Save MattJeanes/839c7adfef085f4b6001927e3eb96fd4 to your computer and use it in GitHub Desktop.
Alias commands to use GitHub Copilot CLI in PowerShell
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# You should insert this script into your PowerShell Profile script so it exists in every session | |
# Fun fact: This script was mostly generated by ChatGPT by giving it the bash version of the output | |
# from `github-copilot-cli alias -- "$0"` with a few fixes from me | |
function Invoke-CopilotWhatTheShell { | |
$TMPFILE = New-TemporaryFile; | |
try { | |
github-copilot-cli what-the-shell $args --shellout $TMPFILE | |
if ($LASTEXITCODE -eq 0) { | |
if (Test-Path $TMPFILE) { | |
$FIXED_CMD = Get-Content -Raw $TMPFILE; | |
Invoke-Expression $FIXED_CMD; | |
} | |
else { | |
Write-Host "Apologies! Extracting command failed"; | |
} | |
} | |
else { | |
Write-Error "Apologies! Copilot failed to generate a command"; | |
} | |
} | |
finally { | |
Remove-Item $TMPFILE; | |
} | |
} | |
Set-Alias '??' 'Invoke-CopilotWhatTheShell'; | |
Set-Alias 'wts' 'Invoke-CopilotWhatTheShell'; | |
function Invoke-CopilotGitAssist { | |
$TMPFILE = New-TemporaryFile; | |
try { | |
github-copilot-cli git-assist $args --shellout $TMPFILE | |
if ($LASTEXITCODE -eq 0) { | |
if (Test-Path $TMPFILE) { | |
$FIXED_CMD = Get-Content -Raw $TMPFILE; | |
Invoke-Expression $FIXED_CMD; | |
} | |
else { | |
Write-Host "Apologies! Extracting command failed"; | |
} | |
} | |
else { | |
Write-Error "Apologies! Copilot failed to generate a command"; | |
} | |
} | |
finally { | |
Remove-Item $TMPFILE; | |
} | |
} | |
Set-Alias 'git?' 'Invoke-CopilotGitAssist'; | |
function Invoke-CopilotGitHubAssist { | |
$TMPFILE = New-TemporaryFile; | |
try { | |
github-copilot-cli gh-assist $args --shellout $TMPFILE | |
if ($LASTEXITCODE -eq 0) { | |
if (Test-Path $TMPFILE) { | |
$FIXED_CMD = Get-Content -Raw $TMPFILE; | |
Invoke-Expression $FIXED_CMD; | |
} | |
else { | |
Write-Host "Apologies! Extracting command failed"; | |
} | |
} | |
else { | |
Write-Error "Apologies! Copilot failed to generate a command"; | |
} | |
} | |
finally { | |
Remove-Item $TMPFILE; | |
} | |
} | |
Set-Alias 'gh?' 'Invoke-CopilotGitHubAssist'; |
Awesome, works like a charm.
Thanks
Thank you, works fine π
Fantastic thanks!
When copilot cli needs to perform more than one action in powershell this gist fails:
PS C:\Users\danielp> ?? create a .txt file and inside the file write a haiku about sunsets
ββββββββββββββββββββ Command ββββββββββββββββββββ
New-Item -Path . -Name "haiku.txt" -ItemType "file"
Add-Content -Path "haiku.txt" -Value "The sun is setting"
Add-Content -Path "haiku.txt" -Value "The sky is turning orange"
Add-Content -Path "haiku.txt" -Value "The day is over"
ββββββββββββββββββ Explanation ββββββββββββββββββ
β New-Item is used to create a new item, e.g. a file.
β -Path . specifies that we want to create the file in the current directory.
β -Name "haiku.txt" specifies the name of the file.
β -ItemType "file" specifies that we want to create a file.
β Add-Content is used to add content to a file.
β -Path "haiku.txt" specifies the file to add content to.
β -Value "..." specifies the content to add.
π Hold on, executing commmand...
Invoke-Expression : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Command'.
Specified method is not supported.
To support multi line commands, add -Raw
to Get-Concent
.
I've updated the script with your suggestion @qqii, thank you!
@MattJeanes
Been trying to use Copilot CLI for almost a month now and I just came across this and it worked!
Thank you!
Thanks Matt, it's working fine π
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Works great, thanks!