Files
versioning-bundle/Command/StatusCommand.php
T

73 lines
2.2 KiB
PHP

<?php
namespace Shivas\VersioningBundle\Command;
use Shivas\VersioningBundle\Formatter\FormatterInterface;
use Shivas\VersioningBundle\Service\VersionManager;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Yaml\Parser;
use Symfony\Component\Yaml\Yaml;
use Version\Version;
/**
* Class StatusCommand
*/
class StatusCommand extends Command
{
/**
* @var VersionManager
*/
private $manager;
/**
* Constructor
*
* @param VersionManager $manager
*/
public function __construct(VersionManager $manager)
{
$this->manager = $manager;
parent::__construct();
}
/**
* {@inheritdoc}
*/
protected function configure()
{
$this
->setName('app:version:status')
->setDescription('Show current application version');
}
/**
* Show application version status
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln(sprintf('Provider: <comment>%s</comment>', get_class($this->manager->getActiveProvider())));
$formatter = $this->manager->getFormatter();
if ($formatter instanceof FormatterInterface) {
$output->writeln(sprintf('Formatter: <comment>%s</comment>', get_class($formatter)));
} else {
$output->writeln(sprintf('Formatter: <comment>%s</comment>', 'None'));
}
$version = $this->manager->getVersion();
$newVersion = $this->manager->getVersionFromProvider();
if ((string) $version == (string) $newVersion) {
$output->writeln(sprintf('Current version: <info>%s</info>', $version));
} else {
$output->writeln(sprintf('Current version: <error>%s</error>', $version));
$output->writeln(sprintf('New version: <info>%s</info>', $newVersion));
$output->writeln(sprintf('<comment>%s</comment>', 'Version outdated, please run the cache:clear command'));
}
}
}