PowerShellEditorServices
PowerShellEditorServices copied to clipboard
Add task provider APIs
VS Code 1.14 includes a new task provider concept which allows extensions to dynamcially register tasks that show up in the "Tasks: Run Task" menu. I think this would be really useful for the following scenarios:
- Generating tasks from psake or Invoke-Build scripts (@nightroman)
- Generating tasks for Pester tests if any are detected in the project
- Generating tasks for PSGallery operations (publish, etc)
However, I think that generating tasks from build scripts is probably what people would be doing 99% of the time.
@nightroman, I'd love to work with you to get Invoke-Build hooked up with this for the next PowerShell extension update. Here's what I'm thinking:
-
Editor Services will provide new cmdlets for registering "editor tasks" with a syntax like this:
Register-EditorTask -Name "Build" -Source "Invoke-Build" -Command "Invoke-Build .\build.ps1 Build" -
Invoke-Build will provide a new command (very similar to New-VSCodeTask.ps1) which will check for the existence of Register-EditorTask (or PSES being loaded) and then register all available tasks in the editor using the aforementioned command
-
The user will create a workspace profile which will invoke your command on their build script so that the build tasks are auto-registered when they load the project in VS Code.
How does that sound? Can you see any problems with this approach? Any better ideas?
It sounds good. I'll create a new command similar to New-VSCodeTask.ps1.
This would be useful to know:
- How is a registered command invoked internally? By powershell.exe or in the current session? In the terminal or integrated console?
- Is there some conventional current location on invoking a registered command?
- How is
Register-EditorTaskgoing to work if it is called with theNamealready registered? - Can I call
Register-EditorTaskfrom Microsoft.VSCode_profile.ps1 instead of a workspace profile?
Added the script Register-VSCodeTask.ps1. For now, it is available in the repository and PSGallery.
@daviwil How is it going?
Hey Roman, sorry for the delay, I was out on vacation. I'll be getting started back on up on this work in a couple of days.
In progress code is in the https://github.com/daviwil/PowerShellEditorServices/tree/task-provider branch, stashing it momentarily while I look into something else.