BUG Fix recipes not being un-installed after inlining

Improve format of output logging
This commit is contained in:
Damian Mooyman 2017-07-10 13:59:00 +12:00
parent c8288e2be5
commit 651f1f13af
No known key found for this signature in database
GPG Key ID: 78B823A10DE27D1A
3 changed files with 27 additions and 7 deletions

View File

@ -74,6 +74,9 @@ trait RecipeCommandBehaviour
throw new InvalidArgumentException("Invalid composer.json data with error: " . json_last_error_msg());
}
file_put_contents($path, $content);
// Reset composer object
$this->resetComposer();
}
/**
@ -235,7 +238,7 @@ trait RecipeCommandBehaviour
foreach ($installedRecipe->getRequires() as $requireName => $require) {
$requireVersion = $require->getPrettyConstraint();
$output->writeln(
" * Inline dependency <info>{$requireName}</info> as <info>{$requireVersion}</info>"
" - Inlining <info>{$requireName}</info> (<comment>{$requireVersion}</comment>)"
);
$composerData['require'][$requireName] = $requireVersion;
}

View File

@ -29,17 +29,33 @@ class RecipeInstaller extends LibraryInstaller {
protected function installProjectFiles($recipe, $sourceRoot, $destinationRoot, $filePatterns)
{
$fileIterator = $this->getFileIterator($sourceRoot, $filePatterns);
$any = false;
foreach($fileIterator as $path => $info) {
$relativePath = substr($path, strlen($sourceRoot));
$destination = $destinationRoot . $relativePath;
// Only copy non-existent files
if (file_exists($destination)) {
continue;
// Write header
if (!$any) {
$this->io->write("Installing project files for recipe <info>{$recipe}</info>:");
$any = true;
}
// Check if file exists
if (file_exists($destination)) {
if (file_get_contents($destination) === file_get_contents($path)) {
$this->io->write(
" - Skipping <info>$relativePath</info> (<comment>existing, but unchanged</comment>)"
);
} else {
$this->io->write(
" - Skipping <info>$relativePath</info> (<comment>existing and modified in project</comment>)"
);
}
} else {
$this->io->write(" - Installing <info>$relativePath</info>");
$this->filesystem->ensureDirectoryExists(dirname($destination));
copy($path, $destination);
}
$this->io->write("Installing recipe <info>$recipe</info> file <info>$relativePath</info>");
$this->filesystem->ensureDirectoryExists(dirname($destination));
copy($path, $destination);
}
}

View File

@ -28,6 +28,7 @@ class RecipePlugin implements PluginInterface, EventSubscriberInterface, Capable
public static function getSubscribedEvents()
{
return [
'post-package-update' => 'installPackage',
'post-package-install' => 'installPackage',
];
}