Can the load directive in CAKE be used on an optional file?

Viewed 284

In a cake script, when using the load directive (#load) can this be optional? If the referenced file does not exist I don't want the CAKE script to return an exception.

The documentation references the use of a '?' to make it attempt to load, but even with this I get exceptions if the file does not exist.

#load "local:?path=properties.cake";

But on exection I get error:

Analyzing build script...
Error: Could not find script 'C:/projects/my-project/properties.cake'.

The CAKE script is common across many projects, only some of which would have the additional file hence the question.

Thanks

3 Answers

You can solve this by provisioning a blank/default properties.cake in build.ps1 script, like this.

if (!(Test-Path "properties.cake")) {
    Write-Host "First run! Generating properties.cake..."
    Copy-Item "properties.cake.default" -Destination ".\properties.cake"
}

# Build Cake arguments
$cakeArguments = @("$Script");
(...)

Then you need to commit a properties.cake.default file with your cake script!

This is now supported at least since Cake version 0.38.5. The #load directive will only display a warning if the .cake file being loaded does not exist.

Screenshot of Cake displaying a warning when the file does not exist

Related