/**
  * {@inheritdoc}
  */
 public function generateReleaseUrl($sourceUrl, Version $version)
 {
     if ($version->isDev()) {
         return false;
     }
     return sprintf('%s/releases/tag/%s', $this->generateBaseUrl($sourceUrl), $version->getPretty());
 }
 /**
  * Get the version to use for the compare url.
  *
  * For dev versions, it returns the commit short hash in full pretty version.
  *
  * @param Version $version
  *
  * @return string
  */
 protected function getCompareVersion(Version $version)
 {
     if ($version->isDev()) {
         return substr($version->getFullPretty(), strlen($version->getPretty()) + 1);
     }
     return $version->getPretty();
 }
 /**
  * {@inheritdoc}
  */
 public function getOutput(OperationInterface $operation, UrlGenerator $urlGenerator = null)
 {
     if (!$operation instanceof UpdateOperation) {
         throw new \LogicException('Operation should be an instance of UpdateOperation');
     }
     $output = [];
     $initialPackage = $operation->getInitialPackage();
     $targetPackage = $operation->getTargetPackage();
     $versionFrom = new Version($initialPackage->getVersion(), $initialPackage->getPrettyVersion(), method_exists($initialPackage, 'getFullPrettyVersion') ? $initialPackage->getFullPrettyVersion() : VersionParser::formatVersion($initialPackage));
     $versionTo = new Version($targetPackage->getVersion(), $targetPackage->getPrettyVersion(), method_exists($targetPackage, 'getFullPrettyVersion') ? $targetPackage->getFullPrettyVersion() : VersionParser::formatVersion($targetPackage));
     $action = 'updated';
     if (Comparator::greaterThan($versionFrom->getName(), $versionTo->getName())) {
         $action = 'downgraded';
     }
     $output[] = sprintf(' - <fg=green>%s</fg=green> %s from <fg=yellow>%s</fg=yellow> to <fg=yellow>%s</fg=yellow>', $initialPackage->getName(), $action, $versionFrom->getPretty(), $versionTo->getPretty());
     if ($urlGenerator) {
         $compareUrl = $urlGenerator->generateCompareUrl($initialPackage->getSourceUrl(), $versionFrom, $targetPackage->getSourceUrl(), $versionTo);
         if (!empty($compareUrl)) {
             $output[] = sprintf('   See changes: %s', $compareUrl);
         }
         $releaseUrl = $urlGenerator->generateReleaseUrl($this->extractSourceUrl($operation), $versionTo);
         if (!empty($releaseUrl)) {
             $output[] = sprintf('   Release notes: %s', $releaseUrl);
         }
     }
     return $output;
 }
 public function test_it_detects_dev_version()
 {
     $this->SUT = new Version('v1.0.0.0', 'v1.0.0', 'v1.0.0');
     $this->assertFalse($this->SUT->isDev());
     $this->SUT = new Version('v.1.0.9999999.9999999-dev', 'dev-master', 'dev-master 1234abc');
     $this->assertTrue($this->SUT->isDev());
     $this->SUT = new Version('dev-fix/issue', 'dev-fix/issue', 'dev-fix/issue 1234abc');
     $this->assertTrue($this->SUT->isDev());
 }
 /**
  * {@inheritdoc}
  */
 public function getOutput(OperationInterface $operation, UrlGenerator $urlGenerator = null)
 {
     if (!$operation instanceof UninstallOperation) {
         throw new \LogicException('Operation should be an instance of UninstallOperation');
     }
     $output = [];
     $package = $operation->getPackage();
     $version = new Version($package->getVersion(), $package->getPrettyVersion(), method_exists($package, 'getFullPrettyVersion') ? $package->getFullPrettyVersion() : VersionParser::formatVersion($package));
     $output[] = sprintf(' - <fg=green>%s</fg=green> removed (installed version was <fg=yellow>%s</fg=yellow>)', $package->getName(), $version->getPretty());
     return $output;
 }
 /**
  * {@inheritdoc}
  */
 public function getOutput(OperationInterface $operation, UrlGenerator $urlGenerator = null)
 {
     if (!$operation instanceof InstallOperation) {
         throw new \LogicException('Operation should be an instance of InstallOperation');
     }
     $output = [];
     $package = $operation->getPackage();
     $version = new Version($package->getVersion(), $package->getPrettyVersion(), method_exists($package, 'getFullPrettyVersion') ? $package->getFullPrettyVersion() : VersionParser::formatVersion($package));
     $output[] = sprintf(' - <fg=green>%s</fg=green> installed in version <fg=yellow>%s</fg=yellow>', $package->getName(), $version->getPretty());
     if ($urlGenerator) {
         $releaseUrl = $urlGenerator->generateReleaseUrl($this->extractSourceUrl($operation), $version);
         if (!empty($releaseUrl)) {
             $output[] = sprintf('   Release notes: %s', $releaseUrl);
         }
     }
     return $output;
 }
 /**
  * Return whether the version is dev or not.
  *
  * @param Version $version
  *
  * @return string
  */
 protected function isDevVersion(Version $version)
 {
     return substr($version->getName(), 0, 4) === 'dev-' || substr($version->getName(), -4) === '-dev';
 }
 /**
  * Return whether the version is dev or not.
  *
  * @param Version $version
  *
  * @return string
  *
  * @deprecated since v1.4, will be removed in v2.0. Use $version->isDev() instead.
  */
 protected function isDevVersion(Version $version)
 {
     return $version->isDev();
 }