Skip to content

Commit 4f2d210

Browse files
committed
Add mirror_vcs_repositories configuration option
1 parent ba93574 commit 4f2d210

4 files changed

Lines changed: 35 additions & 4 deletions

File tree

src/Controller/ApiController.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use CodedMonkey\Dirigent\Package\PackageMetadataResolver;
1414
use CodedMonkey\Dirigent\Package\PackageProviderManager;
1515
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
16+
use Symfony\Component\DependencyInjection\Attribute\Autowire;
1617
use Symfony\Component\HttpFoundation\BinaryFileResponse;
1718
use Symfony\Component\HttpFoundation\JsonResponse;
1819
use Symfony\Component\HttpFoundation\Request;
@@ -33,6 +34,8 @@ public function __construct(
3334
private readonly PackageDistributionResolver $distributionResolver,
3435
private readonly PackageProviderManager $providerManager,
3536
private readonly MessageBusInterface $messenger,
37+
#[Autowire(param: 'dirigent.metadata.mirror_vcs_repositories')]
38+
private readonly bool $mirrorVcsRepositories = false,
3639
) {
3740
}
3841

@@ -170,7 +173,7 @@ private function findPackage(string $packageName): ?Package
170173
$package = new Package();
171174
$package->setName($packageName);
172175
$package->setMirrorRegistry($registry);
173-
$package->setFetchStrategy(PackageFetchStrategy::Mirror);
176+
$package->setFetchStrategy($this->mirrorVcsRepositories ? PackageFetchStrategy::Vcs : PackageFetchStrategy::Mirror);
174177

175178
$this->packageRepository->save($package, true);
176179

src/Controller/Dashboard/DashboardPackagesController.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use CodedMonkey\Dirigent\Package\PackageMetadataResolver;
1515
use Doctrine\ORM\EntityManagerInterface;
1616
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
17+
use Symfony\Component\DependencyInjection\Attribute\Autowire;
1718
use Symfony\Component\HttpFoundation\Request;
1819
use Symfony\Component\HttpFoundation\Response;
1920
use Symfony\Component\Messenger\MessageBusInterface;
@@ -27,6 +28,8 @@ public function __construct(
2728
private readonly PackageRepository $packageRepository,
2829
private readonly PackageMetadataResolver $metadataResolver,
2930
private readonly MessageBusInterface $messenger,
31+
#[Autowire(param: 'dirigent.metadata.mirror_vcs_repositories')]
32+
private readonly bool $mirrorVcsRepositories = false,
3033
) {
3134
}
3235

@@ -104,7 +107,7 @@ public function addMirroring(Request $request): Response
104107
$package = new Package();
105108
$package->setName($packageName);
106109
$package->setMirrorRegistry($registry);
107-
$package->setFetchStrategy(PackageFetchStrategy::Mirror);
110+
$package->setFetchStrategy($this->mirrorVcsRepositories ? PackageFetchStrategy::Vcs : PackageFetchStrategy::Mirror);
108111

109112
$this->packageRepository->save($package, true);
110113

src/DependencyInjection/DirigentConfiguration.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace CodedMonkey\Dirigent\DependencyInjection;
44

5+
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
56
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
67
use Symfony\Component\Config\Definition\ConfigurationInterface;
78
use function Symfony\Component\String\u;
@@ -84,6 +85,22 @@ public function getConfigTreeBuilder(): TreeBuilder
8485
->end()
8586
->end();
8687

88+
$this->addMetadataSection($rootNode);
89+
8790
return $treeBuilder;
8891
}
92+
93+
private function addMetadataSection(ArrayNodeDefinition $rootNode): void
94+
{
95+
$rootNode->children()
96+
->arrayNode('metadata')
97+
->addDefaultsIfNotSet()
98+
->children()
99+
->booleanNode('mirror_vcs_repositories')
100+
->defaultFalse()
101+
->info('Fetch mirrored packages from their VCS repositories by default when possible.')
102+
->end()
103+
->end()
104+
->end();
105+
}
89106
}

src/DependencyInjection/DirigentExtension.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ class DirigentExtension extends ConfigurableExtension
1212
protected function loadInternal(array $mergedConfig, ContainerBuilder $container): void
1313
{
1414
if (null === $slug = $mergedConfig['slug']) {
15-
$slug = (new AsciiSlugger())->slug($mergedConfig['title']);
16-
$slug = strtolower($slug);
15+
$slug = (new AsciiSlugger())->slug($mergedConfig['title'])->lower();
1716
}
1817

1918
$container->setParameter('dirigent.title', $mergedConfig['title']);
2019
$container->setParameter('dirigent.slug', $slug);
2120

2221
$this->registerEncryptionConfiguration($mergedConfig['encryption'], $container);
22+
$this->registerMetadataConfiguration($mergedConfig['metadata'], $container);
2323

2424
$container->setParameter('dirigent.security.public_access', $mergedConfig['security']['public']);
2525
$container->setParameter('dirigent.security.registration_enabled', $mergedConfig['security']['registration']);
@@ -58,4 +58,12 @@ private function registerEncryptionConfiguration(array $config, ContainerBuilder
5858
$container->setParameter('dirigent.encryption.public_key_path', $config['public_key_path']);
5959
$container->setParameter('dirigent.encryption.rotated_key_paths', $config['rotated_key_paths']);
6060
}
61+
62+
/**
63+
* @param array{mirror_vcs_repositories: bool} $config
64+
*/
65+
private function registerMetadataConfiguration(array $config, ContainerBuilder $container): void
66+
{
67+
$container->setParameter('dirigent.metadata.mirror_vcs_repositories', $config['mirror_vcs_repositories']);
68+
}
6169
}

0 commit comments

Comments
 (0)