146 lines
4.1 KiB
PHP
146 lines
4.1 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;
|
|
|
|
use Fxp\Composer\AssetPlugin\Exception\InvalidArgumentException;
|
|
use Fxp\Composer\AssetPlugin\Type\AssetTypeInterface;
|
|
|
|
/**
|
|
* Assets definition.
|
|
*
|
|
* @author François Pluchino <francois.pluchino@gmail.com>
|
|
*/
|
|
class Assets
|
|
{
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected static $typeClasses = array(
|
|
'npm' => 'Fxp\Composer\AssetPlugin\Type\NpmAssetType',
|
|
'bower' => 'Fxp\Composer\AssetPlugin\Type\BowerAssetType',
|
|
);
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected static $registryFactoryClasses = array(
|
|
'default' => 'Fxp\Composer\AssetPlugin\Repository\DefaultRegistryFactory',
|
|
'bower-private' => 'Fxp\Composer\AssetPlugin\Repository\BowerPrivateRegistryFactory',
|
|
);
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected static $defaultRegistryClasses = array(
|
|
'npm' => 'Fxp\Composer\AssetPlugin\Repository\NpmRepository',
|
|
'bower' => 'Fxp\Composer\AssetPlugin\Repository\BowerRepository',
|
|
);
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected static $vcsRepositoryDrivers = array(
|
|
'vcs' => 'Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository',
|
|
'github' => 'Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository',
|
|
'git-bitbucket' => 'Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository',
|
|
'git' => 'Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository',
|
|
'hg-bitbucket' => 'Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository',
|
|
'hg' => 'Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository',
|
|
'perforce' => 'Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository',
|
|
'svn' => 'Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository',
|
|
);
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected static $vcsDrivers = array(
|
|
'github' => 'Fxp\Composer\AssetPlugin\Repository\Vcs\GitHubDriver',
|
|
'git-bitbucket' => 'Fxp\Composer\AssetPlugin\Repository\Vcs\GitBitbucketDriver',
|
|
'git' => 'Fxp\Composer\AssetPlugin\Repository\Vcs\GitDriver',
|
|
'hg-bitbucket' => 'Fxp\Composer\AssetPlugin\Repository\Vcs\HgBitbucketDriver',
|
|
'hg' => 'Fxp\Composer\AssetPlugin\Repository\Vcs\HgDriver',
|
|
'perforce' => 'Fxp\Composer\AssetPlugin\Repository\Vcs\PerforceDriver',
|
|
// svn must be last because identifying a subversion server for sure is practically impossible
|
|
'svn' => 'Fxp\Composer\AssetPlugin\Repository\Vcs\SvnDriver',
|
|
);
|
|
|
|
/**
|
|
* Creates asset type.
|
|
*
|
|
* @param string $type
|
|
*
|
|
* @return AssetTypeInterface
|
|
*
|
|
* @throws InvalidArgumentException When the asset type does not exist
|
|
*/
|
|
public static function createType($type)
|
|
{
|
|
if (!isset(static::$typeClasses[$type])) {
|
|
throw new InvalidArgumentException('The asset type "'.$type.'" does not exist, only "'.implode('", "', static::getTypes()).'" are accepted');
|
|
}
|
|
|
|
$class = static::$typeClasses[$type];
|
|
|
|
return new $class();
|
|
}
|
|
|
|
/**
|
|
* Gets the asset types.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getTypes()
|
|
{
|
|
return array_keys(static::$typeClasses);
|
|
}
|
|
|
|
/**
|
|
* Gets the asset registry repository factories.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getRegistryFactories()
|
|
{
|
|
return static::$registryFactoryClasses;
|
|
}
|
|
|
|
/**
|
|
* Gets the asset registry repositories.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getDefaultRegistries()
|
|
{
|
|
return static::$defaultRegistryClasses;
|
|
}
|
|
|
|
/**
|
|
* Gets the asset vcs repository drivers.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getVcsRepositoryDrivers()
|
|
{
|
|
return static::$vcsRepositoryDrivers;
|
|
}
|
|
|
|
/**
|
|
* Gets the asset vcs drivers.
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getVcsDrivers()
|
|
{
|
|
return static::$vcsDrivers;
|
|
}
|
|
}
|