resolve

fun resolve(content: String, origin: String, placeholders: Map<String, String>): String

content with every ${name} replaced by its configured value.

With placeholders empty nothing is scanned and the content comes back as it was - which is what makes this feature cost a migration that never asked for it nothing at all, ${ included.

Parameters

origin

What to call this file in a refusal - the path it was found at.

Throws

INVALID_MIGRATION for a ${name} no value was configured for. Refused rather than left standing: outside a string literal the server would have refused it anyway, and inside one - INSERT INTO settings VALUES ('${tenant}') - it would be stored exactly as written and nothing would ever say so.