export interface TemplateVars {
  [key: string]: string;
}

/**
 * Replaces {{PLACEHOLDER}} tokens with provided values.
 * Does NOT expand ${ENV_VAR} syntax — those pass through for shell resolution.
 */
export function renderTemplate(
  template: string,
  vars: TemplateVars,
  options: { strict?: boolean } = {},
): string {
  return template.replace(/\{\{([A-Z_][A-Z0-9_]*)\}\}/g, (match, varName: string) => {
    if (varName in vars) {
      return vars[varName] ?? '';
    }
    if (options.strict) {
      throw new Error(`Template variable not provided: {{${varName}}}`);
    }
    return '';
  });
}
