mirror of
https://github.com/shlinkio/shlink.git
synced 2025-02-17 15:59:56 +03:00
Created function to abstract how to load config from a glob pattern
This commit is contained in:
parent
3520ab6b18
commit
02ca843944
7 changed files with 48 additions and 14 deletions
|
@ -3,13 +3,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Shlinkio\Shlink\CLI;
|
namespace Shlinkio\Shlink\CLI;
|
||||||
|
|
||||||
use Zend\Config\Factory;
|
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
|
||||||
use Zend\Stdlib\Glob;
|
|
||||||
|
|
||||||
class ConfigProvider
|
class ConfigProvider
|
||||||
{
|
{
|
||||||
public function __invoke()
|
public function __invoke()
|
||||||
{
|
{
|
||||||
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
|
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,9 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Shlinkio\Shlink\Common;
|
namespace Shlinkio\Shlink\Common;
|
||||||
|
|
||||||
|
use Zend\Config\Factory;
|
||||||
|
use Zend\Stdlib\Glob;
|
||||||
|
|
||||||
use function getenv;
|
use function getenv;
|
||||||
use function json_decode as spl_json_decode;
|
use function json_decode as spl_json_decode;
|
||||||
use function json_last_error;
|
use function json_last_error;
|
||||||
|
@ -59,3 +62,11 @@ function json_decode(string $json, int $depth = 512, int $options = 0): array
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads configuration files which match provided glob pattern, and returns the merged result as array
|
||||||
|
*/
|
||||||
|
function loadConfigFromGlob(string $globPattern): array
|
||||||
|
{
|
||||||
|
return Factory::fromFiles(Glob::glob($globPattern, Glob::GLOB_BRACE));
|
||||||
|
}
|
||||||
|
|
|
@ -3,13 +3,10 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Shlinkio\Shlink\Common;
|
namespace Shlinkio\Shlink\Common;
|
||||||
|
|
||||||
use Zend\Config\Factory;
|
|
||||||
use Zend\Stdlib\Glob;
|
|
||||||
|
|
||||||
class ConfigProvider
|
class ConfigProvider
|
||||||
{
|
{
|
||||||
public function __invoke(): array
|
public function __invoke(): array
|
||||||
{
|
{
|
||||||
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
|
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Shlinkio\Shlink\Core;
|
namespace Shlinkio\Shlink\Core;
|
||||||
|
|
||||||
use Zend\Config\Factory;
|
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
|
||||||
use Zend\Stdlib\Glob;
|
|
||||||
|
|
||||||
class ConfigProvider
|
class ConfigProvider
|
||||||
{
|
{
|
||||||
public function __invoke()
|
public function __invoke()
|
||||||
{
|
{
|
||||||
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
|
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Shlinkio\Shlink\EventDispatcher;
|
namespace Shlinkio\Shlink\EventDispatcher;
|
||||||
|
|
||||||
use Zend\Config\Factory;
|
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
|
||||||
use Zend\Stdlib\Glob;
|
|
||||||
|
|
||||||
class ConfigProvider
|
class ConfigProvider
|
||||||
{
|
{
|
||||||
public function __invoke()
|
public function __invoke()
|
||||||
{
|
{
|
||||||
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
|
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,12 @@ namespace Shlinkio\Shlink\IpGeolocation;
|
||||||
|
|
||||||
use Zend\Config\Factory;
|
use Zend\Config\Factory;
|
||||||
use Zend\Stdlib\Glob;
|
use Zend\Stdlib\Glob;
|
||||||
|
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
|
||||||
|
|
||||||
class ConfigProvider
|
class ConfigProvider
|
||||||
{
|
{
|
||||||
public function __invoke(): array
|
public function __invoke(): array
|
||||||
{
|
{
|
||||||
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
|
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
28
module/IpGeolocation/test/ConfigProviderTest.php
Normal file
28
module/IpGeolocation/test/ConfigProviderTest.php
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace ShlinkioTest\Shlink\IpGeolocation;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Shlinkio\Shlink\IpGeolocation\ConfigProvider;
|
||||||
|
use Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory;
|
||||||
|
|
||||||
|
class ConfigProviderTest extends TestCase
|
||||||
|
{
|
||||||
|
/** @var ConfigProvider */
|
||||||
|
private $configProvider;
|
||||||
|
|
||||||
|
public function setUp(): void
|
||||||
|
{
|
||||||
|
$this->configProvider = new ConfigProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @test */
|
||||||
|
public function configIsReturned(): void
|
||||||
|
{
|
||||||
|
$config = $this->configProvider->__invoke();
|
||||||
|
|
||||||
|
$this->assertArrayHasKey('dependencies', $config);
|
||||||
|
$this->assertArrayHasKey(ConfigAbstractFactory::class, $config);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue