Examples

Build Script

In order to make use of the Cake.VsCode Addin, you will need to first use the #addin preprocessor to install Cake.VsCode, but once that is done, you can directly use both the VscePackage and VscePublish commands.

Note

You can see an example of this Addin in action in the [build.cake](https://github.com/gep13/chocolatey-vscode/blob/master/build.cake) file.

VscePackage

Due to the way in which vsce works, it is possible to execute the command line utility directly, without any additional settings. This will simply package the package.json file, and output the resulting vsix file to the same directory.

#addin Cake.VsCode

Task("Package-Extension")
    .Does(() =>
{
    VscePackage();
});

If you want some more control over how this works though, you can use the following:

#addin Cake.VsCode

var version = "0.1.0";
var buildResultDir = Directory("./build")
var packageFile = File("chocolatey-vscode-" + version + ".vsix");

Task("Package-Extension")
    .IsDependentOn("Find-Version-Number") 
    .Does(() =>
{
    VscePackage(new VscePackageSettings() {
        OutputFilePath = buildResultDir + packageFile,
        BaseContentUrl = new Uri("http://mydomain.com"),
        BaseImagesUrll = new Uri("http://mydomain.com/images")
    });
});

VscePublish

Again, due to the way in which vsce works, it is possible to run vsce publish without any paramaters. It will simply use the latest vsix file contained within the directory being executed on, and it will assume that the publisher has already been logged in.

#addin Cake.VsCode

Task("Publish-Extension")
    .Does(() =>
{    
    VscePublish();
});

However, it is more realistic that you want to run this on some type of build server, in which case, the publisher is NOT already going to be logged in. To account for this, you can pass the publishers Personal Access Token into the VscePublish command, as follows:

#addin Cake.VsCode

Task("Publish-Extension")
    .IsDependentOn("Create-Release-Notes")
    .Does(() =>
{
    var personalAccessToken = EnvironmentVariable("VSCE_PAT");
    
    VscePublish(new VscePublishSettings(){
        PersonalAccessToken = personalAccessToken
    });
});

Note

Here the Personal Access Token is being recovered from an Environmental variable where it is located.