Allow ${} system setting expansions to have extendable namespaces

Description

Right now, the following syntax is expanded in CLI parameters and JSON files.

but it will only resolve CommandBox env vars, Java system props, OS process env vars.

Add built in namespaces to allow expansions that reference:

  • server.json properties

  • box.json properties

  • arbitrary JSON file properties

  • Config settings (like the "config show" command)

  • Server info properties (like the "server info property=name" command)

  • Other properties in the same JSON file

Also allow modules to register an onSystemSettingExpansion interceptor to contribute custom system setting namespace expansions. The interceptor gets the following data in interceptData

  • setting - The name of the setting to be expanded (with ${} and :defaultValue removed)

  • defaultValue - The default value, or empty string if none specified

  • resolved - A boolean that should be set true if the interceptor was able to resolve the setting

  • context - A struct of the original JSON being expanded or the parameters from the command line where the expansion was used.

An example would be:

And then you could reference any lucee information like so:

Assignee

Brad Wood

Reporter

Brad Wood

Labels

None

Affects versions

None

Fix versions

Priority

Major
Configure