friendica-addons/advancedcontentfilter/vendor/fxp/composer-asset-plugin/Converter/BowerPackageConverter.php

89 lines
2.6 KiB
PHP

<?php
/*
* This file is part of the Fxp Composer Asset Plugin package.
*
* (c) François Pluchino <francois.pluchino@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Fxp\Composer\AssetPlugin\Converter;
/**
* Converter for bower package to composer package.
*
* @author François Pluchino <francois.pluchino@gmail.com>
*/
class BowerPackageConverter extends AbstractPackageConverter
{
/**
* {@inheritdoc}
*/
protected function getMapKeys()
{
$assetType = $this->assetType;
return array(
'name' => array('name', function ($value) use ($assetType) {
return $assetType->formatComposerName($value);
}),
'type' => array('type', function () use ($assetType) {
return $assetType->getComposerType();
}),
'version' => array('version', function ($value) use ($assetType) {
return $assetType->getVersionConverter()->convertVersion($value);
}),
'version_normalized' => 'version_normalized',
'description' => 'description',
'keywords' => 'keywords',
'license' => 'license',
'time' => 'time',
'bin' => 'bin',
);
}
/**
* {@inheritdoc}
*/
protected function getMapExtras()
{
return array(
'main' => 'bower-asset-main',
'ignore' => 'bower-asset-ignore',
'private' => 'bower-asset-private',
);
}
/**
* {@inheritdoc}
*/
protected function convertDependency($dependency, $version, array &$vcsRepos, array $composer)
{
list($dependency, $version) = $this->checkGithubRepositoryVersion($dependency, $version);
return parent::convertDependency($dependency, $version, $vcsRepos, $composer);
}
/**
* Checks if the version is a Github alias version of repository.
*
* @param string $dependency The dependency
* @param string $version The version
*
* @return string[] The new dependency and the new version
*/
protected function checkGithubRepositoryVersion($dependency, $version)
{
if (preg_match('/^[A-Za-z0-9\-_]+\/[A-Za-z0-9\-_.]+/', $version)) {
$pos = strpos($version, '#');
$pos = false === $pos ? strlen($version) : $pos;
$realVersion = substr($version, $pos);
$version = 'git://github.com/'.substr($version, 0, $pos).'.git'.$realVersion;
}
return array($dependency, $version);
}
}