Skip to content

Commit 669a372

Browse files
committed
Show when GitHub projects are archived (Case 162267)
1 parent e3a4212 commit 669a372

File tree

6 files changed

+35
-4
lines changed

6 files changed

+35
-4
lines changed

src/AppBundle/Entity/Project.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ class Project
4141
*/
4242
private $description;
4343

44+
/**
45+
* @ORM\Column(type="boolean")
46+
*
47+
* @var bool
48+
*/
49+
public $archived = false;
50+
4451
/**
4552
* @ORM\ManyToMany(
4653
* targetEntity="PackageVersion",

src/AppBundle/ProjectImport/ImportProjectTask.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
use AppBundle\Exception\InsufficientVcsAccessException;
66
use AppBundle\Exception\ProjectHasNoComposerPackageUsageInfoException;
7+
use AppBundle\Factory\VcsDriverFactory;
8+
use Composer\Repository\Vcs\GitHubDriver;
79
use Doctrine\ORM\EntityManagerInterface;
810
use Psr\Log\LoggerInterface;
911

@@ -18,18 +20,23 @@ class ImportProjectTask
1820
/** @var PackageVersionFetcher */
1921
private $packageVersionFetcher;
2022

23+
/** @var VcsDriverFactory */
24+
private $vcsDriverFactory;
25+
2126
/** @var LoggerInterface */
2227
private $logger;
2328

2429
public function __construct(
2530
EntityManagerInterface $entityManager,
2631
ProjectProviderInterface $projectProvider,
2732
PackageVersionFetcher $packageVersionFetcher,
33+
VcsDriverFactory $vcsDriverFactory,
2834
LoggerInterface $logger
2935
) {
3036
$this->entityManager = $entityManager;
3137
$this->projectProvider = $projectProvider;
3238
$this->packageVersionFetcher = $packageVersionFetcher;
39+
$this->vcsDriverFactory = $vcsDriverFactory;
3340
$this->logger = $logger;
3441
}
3542

@@ -57,6 +64,17 @@ public function run($vcsUrl)
5764
return false;
5865
}
5966

67+
$vcsDriver = $this->vcsDriverFactory->getDriver($vcsUrl);
68+
if ($vcsDriver instanceof GitHubDriver) {
69+
$repoData = $vcsDriver->getRepoData();
70+
if (null === $repoData) {
71+
$this->logger->error('Failed to fetch repository data for '.$vcsUrl.'. Import failed.');
72+
73+
return false;
74+
}
75+
$project->archived = $repoData['archived'] ?? false;
76+
}
77+
6078
$this->entityManager->flush();
6179

6280
$this->logger->warning('Imported Project '.$project->getName());

src/AppBundle/Resources/config/services.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ services:
7878
$entityManager: "@doctrine.orm.entity_manager"
7979
$projectProvider: "@app.project.provider"
8080
$packageVersionFetcher: "@app.package_version.fetcher"
81+
$vcsDriverFactory: "@app.factory.vcs_driver_factory"
8182
$logger: "@logger"
8283

8384
app.factory.vcs_driver_factory:

src/AppBundle/Resources/views/Project/detail.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
{% block main %}
66
<div class="row">
77
<div class="col-md-6 offset-md-3">
8-
<h2>Project {{ project.name }}</h2>
8+
<h2>Project {{ project.name }} {%-if project.archived %}<span class="badge badge-pill badge-secondary ml-1">Archived</span>{% endif %}</h2>
99
<p>Imported from <a href="{{ project.vcsUrl }}">{{ project.vcsUrl }}</a></p>
1010
<h3>Dependencies</h3>
1111
<ul class="list-group mb-5">

src/AppBundle/Resources/views/Settings/settings.html.twig

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
<p><a href="{{ path("import-repositories") }}">Add projects</a></p>
2929
<ul class="list-group">
3030
{% for project in projects %}
31-
<li class="list-group-item"><a href="{{ path('project', {'name': project.name}) }}">{{ project.name }}</a></li>
31+
<li class="list-group-item"><a href="{{ path('project', {'name': project.name}) }}" {% if project.archived %}class="text-secondary"{% endif %}>
32+
{{ project.name }} {%-if project.archived %}<span class="badge badge-pill badge-secondary ml-1">Archived</span>{% endif %}
33+
</a></li>
3234
{% endfor %}
3335
</ul>
3436
</div>

src/AppBundle/Resources/views/UsageSearch/searchResults.html.twig

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@
1010
<strong>Version {{ version.prettyVersion }}</strong><br/>
1111
{% if version.projects|length > 0 %}
1212
Used by:
13-
{% for project in version.projects %}
14-
<a href="{{ path('project', {'name': project.name}) }}">
13+
{% for project in version.projects|sort((a, b) => a.archived <=> b.archived) %}
14+
<a href="{{ path('project', {'name': project.name}) }}" {% if project.archived %}class="text-secondary"{% endif %}>
1515
{{ project.name }}
1616
</a>
17+
{%- if project.archived -%}
18+
<span class="badge badge-pill badge-secondary">Archived</span>
19+
{%- endif -%}
1720
{% if not loop.last %}, {% endif %}
1821
{% endfor %}
1922
{% endif %}

0 commit comments

Comments
 (0)