7

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

Chris
  • 181
  • 2
  • 9

3 Answers3

5

There currently isn't a way of optionally load a script, but feel free to create an issue at https://github.com/cake-build/cake for this.

The ? is not indicating an attempt to load, it's simply a query string separator. The #load preprocessor value is an URI with optional fallback to a path for backwards compatibility with older versions of Cake.

Patrik Svensson
  • 13,536
  • 8
  • 56
  • 77
0

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!

Juliano Pezzini
  • 131
  • 1
  • 4
0

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

C. Augusto Proiete
  • 24,684
  • 2
  • 63
  • 91