/**
* Gather related (present) files.
*
* Matches: foo(_local)?\.*(.dist)?
*
* i.e., if we're editing config.yml, we also want to check for
* config.yml.dist and config_local.yml
*
* @param FileInterface $file
*
* @return FileInterface[]
*/
private function getRelatedFiles(FileInterface $file)
{
// Match foo(_local).*(.dist)
$base = $file->getFilename();
if (Str::endsWith($base, '.dist')) {
$base = substr($base, 0, -5);
}
$ext = pathinfo($base, PATHINFO_EXTENSION);
$base = Str::replaceLast(".{$ext}", '', $base);
$base = Str::replaceLast('_local', '', $base);
$dir = $file->getParent();
$related = [];
foreach ([".{$ext}", "_local.{$ext}", ".{$ext}.dist"] as $tail) {
$f = $dir->getFile($base . $tail);
if ($f->getFilename() !== $file->getFilename() && $f->exists()) {
$related[] = $f;
}
}
return $related;
}