44
55use AppBundle \Exception \InsufficientVcsAccessException ;
66use AppBundle \Exception \ProjectHasNoComposerPackageUsageInfoException ;
7+ use AppBundle \Factory \VcsDriverFactory ;
8+ use Composer \Repository \Vcs \GitHubDriver ;
79use Doctrine \ORM \EntityManagerInterface ;
810use 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 ());
0 commit comments