Skip to content

Commit

Permalink
Packagist entities temp
Browse files Browse the repository at this point in the history
  • Loading branch information
codedmonkey committed Jun 24, 2024
1 parent b970950 commit 906e883
Show file tree
Hide file tree
Showing 17 changed files with 1,265 additions and 77 deletions.
8 changes: 8 additions & 0 deletions src/AppKernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,14 @@ protected function configureContainer(ContainerConfigurator $container): void
$container->import($configDir . '/services.yaml');
}

public function boot(): void
{
parent::boot();

$_SERVER['COMPOSER_CACHE_DIR'] = $this->container->getParameter('conductor.storage.path') . '/composer-cache';
$_SERVER['COMPOSER_HOME'] = $this->container->getParameter('conductor.storage.path') . '/composer';
}

protected function build(ContainerBuilder $container): void
{
$container->registerExtension(new AppExtension());
Expand Down
14 changes: 14 additions & 0 deletions src/Composer/HttpDownloaderOptionsFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace CodedMonkey\Conductor\Composer;

class HttpDownloaderOptionsFactory
{
public static function getOptions(): array
{
$options['http']['header'][] = 'User-Agent: Conductor';
$options['max_file_size'] = 128_000_000;

return $options;
}
}
41 changes: 24 additions & 17 deletions src/Controller/Dashboard/DashboardPackagesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
namespace CodedMonkey\Conductor\Controller\Dashboard;

use CodedMonkey\Conductor\Doctrine\Entity\Package;
use CodedMonkey\Conductor\Doctrine\Entity\Version;
use CodedMonkey\Conductor\Doctrine\Repository\PackageRepository;
use CodedMonkey\Conductor\Doctrine\Repository\VersionRepository;
use CodedMonkey\Conductor\Form\PackageAddRegistryType;
use CodedMonkey\Conductor\Package\PackageMetadataResolver;
use CodedMonkey\Conductor\Registry\RegistryClientManager;
Expand All @@ -21,6 +23,7 @@ public function __construct(
private readonly PackageRepository $packageRepository,
private readonly PackageMetadataResolver $metadataResolver,
private readonly RegistryClientManager $registryClientManager,
private readonly VersionRepository $versionRepository,
) {
}

Expand All @@ -34,40 +37,40 @@ public function list(): Response
]);
}

#[Route('/dashboard/packages/info/{packageName}/{version}', name: 'dashboard_packages_info', requirements: ['packageName' => '[a-z0-9_.-]+/[a-z0-9_.-]+'])]
public function info(string $packageName, ?string $version = null): Response
#[Route('/dashboard/packages/info/{packageName}/{packageVersion}', name: 'dashboard_packages_info', requirements: ['packageName' => '[a-z0-9_.-]+/[a-z0-9_.-]+'])]
public function info(string $packageName, ?string $packageVersion = null): Response
{
$package = $this->packageRepository->findOneBy(['name' => $packageName]);
$metadata = $this->metadataResolver->resolve($package);

if (null === $version) {
$version = array_key_first($metadata['versions']);
if (null !== $packageVersion) {
$version = $this->versionRepository->findOneBy(['package' => $package, 'version' => $packageVersion]);
} else {
$version = $this->versionRepository->findOneBy(['package' => $package, 'defaultBranch' => true]);
}

$versionMetadata = $metadata['versions'][$version];
$composerPackage = (new ArrayLoader())->load($versionMetadata);
dump($version);
dump($this->versionRepository->findBy(['package' => $package]));

return $this->render('dashboard/packages/package_info.html.twig', [
'package' => $package,
'composerPackage' => $composerPackage,
'version' => $version,
]);
}

#[Route('/dashboard/packages/versions/{packageName}', name: 'dashboard_packages_versions', requirements: ['packageName' => '[a-z0-9_.-]+/[a-z0-9_.-]+'])]
public function versions(string $packageName): Response
{
$package = $this->packageRepository->findOneBy(['name' => $packageName]);
$versions = $package->getVersions()->toArray();

$metadata = $this->metadataResolver->resolve($package);

$versions = array_combine(
array_map(fn (array $vars) => $vars['version_normalized'], $metadata['versions']),
array_map(fn (array $vars) => $vars['version'], $metadata['versions']),
$versionsMap = array_combine(
array_map(fn (Version $version) => $version->getNormalizedVersion(), $versions),
array_map(fn (Version $version) => $version->getVersion(), $versions),
);

return $this->render('dashboard/packages/package_versions.html.twig', [
'package' => $package,
'versions' => $versions,
'versionsMap' => $versionsMap,
]);
}

Expand Down Expand Up @@ -109,8 +112,8 @@ public function addFromRegistry(Request $request): Response
}

$package = new Package();
$package->name = $packageName;
$package->mirrorRegistry = $formData['registry'];
$package->setName($packageName);
$package->setMirrorRegistry($formData['registry']);

$this->metadataResolver->resolve($package);

Expand All @@ -119,7 +122,11 @@ public function addFromRegistry(Request $request): Response
'message' => "The package $packageName was created successfully",
];

$this->packageRepository->save($package);
$this->entityManager->persist($package);

foreach ($package->getVersions() as $version) {
$this->entityManager->persist($version);
}
}

$this->entityManager->flush();
Expand Down
13 changes: 13 additions & 0 deletions src/Doctrine/Entity/ConflictLink.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace CodedMonkey\Conductor\Doctrine\Entity;

use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
class ConflictLink extends PackageLink
{
#[ORM\ManyToOne(targetEntity: Version::class, inversedBy: 'conflict')]
#[ORM\JoinColumn(nullable: false)]
protected Version $version;
}
13 changes: 13 additions & 0 deletions src/Doctrine/Entity/DevRequireLink.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace CodedMonkey\Conductor\Doctrine\Entity;

use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
class DevRequireLink extends PackageLink
{
#[ORM\ManyToOne(targetEntity: Version::class, inversedBy: 'devRequire')]
#[ORM\JoinColumn(nullable: false)]
protected Version $version;
}
Loading

0 comments on commit 906e883

Please sign in to comment.