60 lines
1.5 KiB
PHP
60 lines
1.5 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Sensio\Bundle\DistributionBundle\Upgrade;
|
|
|
|
use Sensio\Bundle\DistributionBundle\Diff\Diff;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
/**
|
|
* Upgrade class.
|
|
*
|
|
* @author Fabien Potencier <fabien@symfony.com>
|
|
*/
|
|
class Upgrade
|
|
{
|
|
public function outputConsoleDiff(OutputInterface $output, $file1, $file2)
|
|
{
|
|
if (is_file($file1)) {
|
|
$file1 = realpath($file1);
|
|
$str1 = file_get_contents($file1);
|
|
} else {
|
|
$str1 = '';
|
|
}
|
|
|
|
if (!is_file($file2)) {
|
|
throw new \RuntimeException(sprintf('The skeleton file "%s" does not exist.', $file2));
|
|
}
|
|
$file2 = realpath($file2);
|
|
$str2 = file_get_contents($file2);
|
|
|
|
$diff = new Diff($str1, $str2);
|
|
|
|
$output->writeln(sprintf('--- %s', $file1));
|
|
$output->writeln(sprintf('+++ %s', $file2));
|
|
foreach ($diff->getDiff() as $line) {
|
|
if ('+' == $line[0]) {
|
|
$format = '<fg=green>+%s</>';
|
|
} elseif ('-' == $line[0]) {
|
|
$format = '<fg=red>-%s</>';
|
|
} elseif ('@' == $line[0]) {
|
|
$format = '<fg=cyan>@%s</>';
|
|
} else {
|
|
$format = ' %s';
|
|
}
|
|
|
|
$output->writeln(sprintf($format, $line[1]));
|
|
}
|
|
|
|
$output->writeln('');
|
|
}
|
|
}
|