Resolve variable placeholders
Your task
A CI pipeline defines variables as lines of the exact form "KEY=value" (no comments, keys need no trimming; split on the first "="). A value may embed placeholders written as "NAME". Resolve every placeholder exactly once: substitute the RAW value of that key as written in the file, do not re-resolve anything inside the substituted text. A placeholder naming a key that does not exist becomes the empty string. A "{" with no closing "}" is kept verbatim through the end of the value, and a "$" not followed by "{" is ordinary text. Return the dict of resolved values.
Examples
resolve_placeholders(lines: list[str]) -> dict[str,str]Example 1
Input
resolve_placeholders(["HOST=db.local", "URL=postgres://${HOST}:5432"])Output
{"HOST": "db.local", "URL": "postgres://db.local:5432"}