PowerShellEditorServices icon indicating copy to clipboard operation
PowerShellEditorServices copied to clipboard

Add task provider APIs

Open daviwil opened this issue 8 years ago • 5 comments

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?

daviwil avatar Jul 20 '17 05:07 daviwil

It sounds good. I'll create a new command similar to New-VSCodeTask.ps1.

nightroman avatar Jul 20 '17 09:07 nightroman

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-EditorTask going to work if it is called with the Name already registered?
  • Can I call Register-EditorTask from Microsoft.VSCode_profile.ps1 instead of a workspace profile?

nightroman avatar Jul 20 '17 09:07 nightroman

Added the script Register-VSCodeTask.ps1. For now, it is available in the repository and PSGallery.

nightroman avatar Jul 21 '17 15:07 nightroman

@daviwil How is it going?

nightroman avatar Aug 01 '17 19:08 nightroman

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.

daviwil avatar Aug 10 '17 22:08 daviwil