fillTemplateString() public static method

Placeholders pattern: {{variable-name}}
public static fillTemplateString ( array $variables, string $templateString ) : string
$variables array associative array with keys as variable names.
$templateString string template string which contains placeholders for variables to be expanded.
return string templateString with expanded variable placeholders
 /**
  * @test
  */
 public function mergeDriverIsNotAddedWhenPresent()
 {
     $gitattributesContents = file_get_contents(__DIR__ . '/../../src/Initialization/.gitattributes.tpl');
     $gitConfigContents = "[merge \"vp-ini\"]";
     $gitattributesVariables = ['vpdb-dir' => self::$repositoryDir];
     $gitattributesContents = StringUtils::fillTemplateString($gitattributesVariables, $gitattributesContents);
     file_put_contents(self::$repositoryDir . "/.gitattributes", $gitattributesContents);
     file_put_contents(self::$repositoryDir . "/.git/config", $gitConfigContents);
     $this->installMergeDriver('auto');
     $this->assertEquals($gitConfigContents, file_get_contents(self::$repositoryDir . "/.git/config"));
     $this->assertEquals($gitattributesContents, file_get_contents(self::$repositoryDir . "/.gitattributes"));
 }
 /**
  * Uninstalls a merge driver - removes 'vp-ini' sections from both .gitattributes
  * and .git/config.
  *
  * @param string $rootDir
  * @param string $pluginDir
  * @param string $vpdbDir
  */
 public static function uninstallMergeDriver($rootDir, $pluginDir, $vpdbDir)
 {
     $gitconfigPath = $rootDir . '/.git/config';
     $gitattributesPath = $rootDir . '/.gitattributes';
     $gitattributesContents = file_get_contents($pluginDir . '/src/Initialization/.gitattributes.tpl');
     $gitattributesVariables = ['vpdb-dir' => PathUtils::getRelativePath($rootDir, $vpdbDir)];
     $gitattributesContents = StringUtils::fillTemplateString($gitattributesVariables, $gitattributesContents);
     if (file_exists($gitattributesPath)) {
         $gitAttributes = file_get_contents($gitattributesPath);
         $gitAttributes = str_replace($gitattributesContents, '', $gitAttributes);
         if (trim($gitAttributes) === '') {
             unlink($gitattributesPath);
         } else {
             file_put_contents($gitattributesPath, $gitAttributes);
         }
     }
     if (file_exists($gitconfigPath)) {
         $gitConfig = file_get_contents($gitconfigPath);
         // https://regex101.com/r/eJ4rJ5/4
         $mergeDriverRegex = "/(\\[merge \\\"vp\\-ini\\\"\\]\\r?\\n)([^\\[]*)/";
         $gitConfig = preg_replace($mergeDriverRegex, '', $gitConfig, 1);
         file_put_contents($gitconfigPath, $gitConfig);
     }
 }
 /**
  * Installs Gitignore to the repository root, or does nothing if the file already exists.
  */
 private function installGitignore()
 {
     $gitignorePath = VP_PROJECT_ROOT . '/.gitignore';
     $projectRoot = realpath(VP_PROJECT_ROOT);
     $vpGitignore = file_get_contents(__DIR__ . '/.gitignore.tpl');
     $gitIgnoreVariables = ['wp-content' => rtrim('/' . PathUtils::getRelativePath($projectRoot, realpath(WP_CONTENT_DIR)), '/'), 'wp-plugins' => rtrim('/' . PathUtils::getRelativePath($projectRoot, realpath(WP_PLUGIN_DIR)), '/'), 'abspath' => rtrim('/' . PathUtils::getRelativePath($projectRoot, realpath(ABSPATH)), '/'), 'abspath-parent' => rtrim('/' . PathUtils::getRelativePath($projectRoot, realpath(dirname(ABSPATH))), '/')];
     $vpGitignore = StringUtils::fillTemplateString($gitIgnoreVariables, $vpGitignore);
     if (is_file($gitignorePath)) {
         $currentGitignore = file_get_contents($gitignorePath);
         if (strpos($currentGitignore, $vpGitignore) !== false) {
             return;
         }
         file_put_contents($gitignorePath, "\n" . $vpGitignore, FILE_APPEND);
     } else {
         file_put_contents($gitignorePath, $vpGitignore);
     }
 }