Skip to content

Commit c77d35d

Browse files
committed
Create default_fetch_strategy configuration option
1 parent 65e7455 commit c77d35d

5 files changed

Lines changed: 25 additions & 15 deletions

File tree

docs/configuration-reference.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ dirigent:
3737
dev_packages: false
3838
preferred_mirror: true
3939
metadata:
40-
mirror_vcs_repositories: false
40+
default_fetch_strategy: 'mirror'
4141
```
4242
4343
## dirigent (root)
@@ -136,9 +136,11 @@ Enable building distribution from the source.
136136

137137
## metadata
138138

139-
### mirror_vcs_repositories
139+
### default_fetch_strategy
140140

141-
Type: `boolean` | Default: `false`
141+
Type: `string` | Default: `mirror`
142+
143+
todo
142144

143145
Fetch mirrored packages from their VCS repositories by default when possible.
144146

src/Controller/ApiController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public function __construct(
4141
private readonly MessageBusInterface $messenger,
4242
#[Autowire(param: 'dirigent.packages.dynamic_updates')]
4343
private readonly bool $dynamicUpdatesEnabled,
44-
#[Autowire(param: 'dirigent.metadata.mirror_vcs_repositories')]
45-
private readonly bool $mirrorVcsRepositories = false,
44+
#[Autowire(param: 'dirigent.metadata.default_fetch_strategy')]
45+
private readonly PackageFetchStrategy $defaultFetchStrategy,
4646
) {
4747
}
4848

@@ -183,7 +183,7 @@ private function findPackage(string $packageName, ?bool $create = false): ?Packa
183183
$package = new Package();
184184
$package->setName($packageName);
185185
$package->setMirrorRegistry($registry);
186-
$package->setFetchStrategy($this->mirrorVcsRepositories ? PackageFetchStrategy::Vcs : PackageFetchStrategy::Mirror);
186+
$package->setFetchStrategy($this->defaultFetchStrategy);
187187

188188
$this->packageRepository->save($package, true);
189189
}

src/Controller/Dashboard/DashboardPackagesController.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public function __construct(
3030
private readonly PackageRepository $packageRepository,
3131
private readonly PackageMetadataResolver $metadataResolver,
3232
private readonly MessageBusInterface $messenger,
33-
#[Autowire(param: 'dirigent.metadata.mirror_vcs_repositories')]
34-
private readonly bool $mirrorVcsRepositories = false,
33+
#[Autowire(param: 'dirigent.metadata.default_fetch_strategy')]
34+
private readonly PackageFetchStrategy $defaultFetchStrategy,
3535
) {
3636
}
3737

@@ -109,7 +109,7 @@ public function addMirroring(Request $request): Response
109109
$package = new Package();
110110
$package->setName($packageName);
111111
$package->setMirrorRegistry($registry);
112-
$package->setFetchStrategy($this->mirrorVcsRepositories ? PackageFetchStrategy::Vcs : PackageFetchStrategy::Mirror);
112+
$package->setFetchStrategy($this->defaultFetchStrategy);
113113

114114
$this->packageRepository->save($package, true);
115115

@@ -147,6 +147,11 @@ public function addVcsRepository(Request $request): Response
147147
if ($form->isSubmitted() && $form->isValid()) {
148148
/** @var Package $package */
149149
$package = $form->getData();
150+
151+
// Mirroring is not possible for local packages
152+
$defaultFetchStrategy = $this->defaultFetchStrategy->isMirror() ? PackageFetchStrategy::Source : $this->defaultFetchStrategy;
153+
$package->setFetchStrategy($defaultFetchStrategy);
154+
150155
$this->packageRepository->save($package, true);
151156

152157
$this->messenger->dispatch(new UpdatePackage($package->getId(), PackageUpdateSource::Manual));

src/DependencyInjection/DirigentConfiguration.php

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

33
namespace CodedMonkey\Dirigent\DependencyInjection;
44

5+
use CodedMonkey\Dirigent\Doctrine\Entity\PackageFetchStrategy;
56
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
67
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
78
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
@@ -83,7 +84,7 @@ private function addDistributionsSection(ArrayNodeDefinition|NodeDefinition $roo
8384
->arrayNode('distributions')
8485
->canBeEnabled('Host the distributions of packages')
8586
->children()
86-
->booleanNode('build')->defaultTrue()->info('Build distributions from the source code (if not already provided)')->end()
87+
->booleanNode('build')->defaultTrue()->info('Build distributions from the source code (if available)')->end()
8788
->booleanNode('mirror')->defaultFalse()->info('Mirror distributions from the original source (if provided)')->end()
8889
->booleanNode('async_api_requests')->defaultFalse()->info('Fetch distributions asynchronously instead of during execution (from the API)')->end()
8990
->booleanNode('dev_versions')->defaultFalse()->info('Include distributions of development versions')->end()
@@ -98,9 +99,10 @@ private function addMetadataSection(ArrayNodeDefinition|NodeDefinition $rootNode
9899
->arrayNode('metadata')
99100
->addDefaultsIfNotSet()
100101
->children()
101-
->booleanNode('mirror_vcs_repositories')
102-
->defaultFalse()
103-
->info('Fetch mirrored packages from their VCS repositories by default when possible.')
102+
->enumNode('default_fetch_strategy')
103+
->enumFqcn(PackageFetchStrategy::class)
104+
->defaultValue(PackageFetchStrategy::Mirror)
105+
->info('Available values are "mirror" (default, fetch from the mirror), "source" (fetch from the VCS source) and "vcs" (fetch complete VCS repository)')
104106
->end()
105107
->end()
106108
->end();

src/DependencyInjection/DirigentExtension.php

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

33
namespace CodedMonkey\Dirigent\DependencyInjection;
44

5+
use CodedMonkey\Dirigent\Doctrine\Entity\PackageFetchStrategy;
56
use Symfony\Component\Config\Definition\ConfigurationInterface;
67
use Symfony\Component\DependencyInjection\ContainerBuilder;
78
use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;
@@ -65,11 +66,11 @@ private function registerEncryptionConfiguration(array $config, ContainerBuilder
6566
}
6667

6768
/**
68-
* @param array{mirror_vcs_repositories: bool} $config
69+
* @param array{default_fetch_strategy: PackageFetchStrategy} $config
6970
*/
7071
private function registerMetadataConfiguration(array $config, ContainerBuilder $container): void
7172
{
72-
$container->setParameter('dirigent.metadata.mirror_vcs_repositories', $config['mirror_vcs_repositories']);
73+
$container->setParameter('dirigent.metadata.default_fetch_strategy', $config['default_fetch_strategy']);
7374
}
7475

7576
/**

0 commit comments

Comments
 (0)