Skip to content

Commit b76fbcd

Browse files
authored
Merge pull request #50 from edgardmessias/refactored
Refactored RegistryFactory
2 parents 1f0abde + dc47aff commit b76fbcd

File tree

9 files changed

+162
-225
lines changed

9 files changed

+162
-225
lines changed

src/components/PackageUtil.php

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
/**
3+
* Asset Packagist.
4+
*
5+
* @link https://github.com/hiqdev/asset-packagist
6+
* @package asset-packagist
7+
* @license BSD-3-Clause
8+
* @copyright Copyright (c) 2016-2017, HiQDev (http://hiqdev.com/)
9+
*/
10+
11+
namespace hiqdev\assetpackagist\components;
12+
13+
use Composer\Semver\Comparator;
14+
use Composer\Semver\VersionParser;
15+
16+
class PackageUtil
17+
{
18+
public static function sort(&$releases)
19+
{
20+
uasort($releases, function ($a, $b) {
21+
if ($a['version'] === $b['version']) {
22+
return 0;
23+
}
24+
25+
$stability_a = VersionParser::parseStability($a['version_normalized']);
26+
$stability_b = VersionParser::parseStability($b['version_normalized']);
27+
28+
// DEV versions to LAST
29+
if ($stability_a === 'dev' && $stability_b !== 'dev') {
30+
return 1;
31+
} elseif ($stability_a !== 'dev' && $stability_b === 'dev') {
32+
return -1;
33+
}
34+
35+
if (Comparator::lessThan($a['version_normalized'], $b['version_normalized'])) {
36+
return 1;
37+
}
38+
39+
return -1;
40+
});
41+
}
42+
}

src/config/common.php

+3
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@
3939
'packageStorage' => [
4040
'class' => \hiqdev\assetpackagist\components\Storage::class,
4141
],
42+
'registryFactory' => [
43+
'class' => hiqdev\assetpackagist\registry\RegistryFactory::class,
44+
],
4245
],
4346
'container' => [
4447
'singletons' => [

src/models/AssetPackage.php

+12-76
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,9 @@
1010

1111
namespace hiqdev\assetpackagist\models;
1212

13-
use Composer\Composer;
14-
use Composer\Factory;
1513
use Composer\Package\Link;
1614
use Exception;
17-
use Fxp\Composer\AssetPlugin\Repository\AssetVcsRepository;
1815
use hiqdev\assetpackagist\components\Storage;
19-
use hiqdev\assetpackagist\log\YiiLogIO;
20-
use hiqdev\assetpackagist\registry\BowerRegistry;
21-
use hiqdev\assetpackagist\registry\NpmRegistry;
2216
use hiqdev\assetpackagist\registry\RegistryFactory;
2317
use Yii;
2418
use yii\base\Object;
@@ -33,29 +27,12 @@ class AssetPackage extends Object
3327
*/
3428
protected $_releases = [];
3529
protected $_saved;
36-
/**
37-
* @var AssetVcsRepository|BowerRegistry|NpmRegistry
38-
*/
39-
protected $_registry;
4030

4131
/**
4232
* @var integer UNIX Epoch timestamp of the latest package update
4333
*/
4434
protected $_updateTime;
4535

46-
/**
47-
* @var YiiLogIO
48-
*/
49-
protected $_io;
50-
/**
51-
* @var Composer
52-
*/
53-
protected $_composer;
54-
/**
55-
* @var Composer
56-
*/
57-
protected static $_commonComposer;
58-
5936
public static function normalizeName($name)
6037
{
6138
return strtolower($name);
@@ -82,13 +59,12 @@ public function __construct($type, $name, $config = [])
8259
$this->_name = $name;
8360
}
8461

62+
/**
63+
* @return RegistryFactory
64+
*/
8565
public function getRegistry()
8666
{
87-
if ($this->_registry === null) {
88-
$this->_registry = RegistryFactory::getRegistry($this->getType(), $this->getComposer()->getRepositoryManager());
89-
}
90-
91-
return $this->_registry;
67+
return Yii::$app->get('registryFactory');
9268
}
9369

9470
public function checkType($type)
@@ -149,49 +125,6 @@ public function getHash()
149125
return $this->_hash;
150126
}
151127

152-
/**
153-
* @return Composer
154-
*/
155-
public static function getCommonComposer()
156-
{
157-
if (static::$_commonComposer === null) {
158-
static::$_commonComposer = (new Factory())->createComposer(
159-
new YiiLogIO(),
160-
Yii::getAlias('@composer/composer.json'),
161-
false,
162-
Yii::getAlias('@composer')
163-
);
164-
}
165-
166-
return static::$_commonComposer;
167-
}
168-
169-
public function setComposer($value)
170-
{
171-
$this->_composer = $value;
172-
}
173-
174-
/**
175-
* @return Composer
176-
*/
177-
public function getComposer()
178-
{
179-
if ($this->_composer === null) {
180-
$this->_composer = static::getCommonComposer();
181-
}
182-
183-
return $this->_composer;
184-
}
185-
186-
public function getIO()
187-
{
188-
if ($this->_io === null) {
189-
$this->_io = new YiiLogIO();
190-
}
191-
192-
return $this->_io;
193-
}
194-
195128
/**
196129
* findOne.
197130
*
@@ -219,21 +152,21 @@ public function load()
219152

220153
public function update()
221154
{
222-
$repo = $this->getRegistry()->buildVcsRepository($this->getName());
223-
$this->_releases = $this->prepareReleases($repo);
155+
$pool = $this->getRegistry()->getPool();
156+
$this->_releases = $this->prepareReleases($pool);
224157
$this->getStorage()->writePackage($this);
225158
$this->load();
226159
}
227160

228161
/**
229-
* @param AssetVcsRepository $repository
162+
* @param \Composer\DependencyResolver\Pool $pool
230163
* @return array
231164
*/
232-
public function prepareReleases($repository)
165+
public function prepareReleases($pool)
233166
{
234167
$releases = [];
235168

236-
foreach ($repository->getPackages() as $package) {
169+
foreach ($pool->whatProvides($this->getFullName()) as $package) {
237170
if ($package instanceof \Composer\Package\AliasPackage) {
238171
continue;
239172
}
@@ -269,6 +202,9 @@ public function prepareReleases($repository)
269202
}
270203
}
271204

205+
//Sort before save
206+
\hiqdev\assetpackagist\components\PackageUtil::sort($releases);
207+
272208
return $releases;
273209
}
274210

src/registry/BowerRegistry.php

-18
This file was deleted.

src/registry/NpmRegistry.php

-23
This file was deleted.

0 commit comments

Comments
 (0)