* * 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 */ 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; } }