Added method \ncc\Resolvers > detectProjectType()

https://git.n64.cc/nosial/ncc/-/issues/28
This commit is contained in:
Netkas 2022-12-16 00:40:35 -05:00
parent 0da410ad31
commit 75aacc62fa

View file

@ -7,9 +7,12 @@
use ncc\Abstracts\BuiltinRemoteSourceType;
use ncc\Abstracts\DefinedRemoteSourceType;
use ncc\Abstracts\LogLevel;
use ncc\Abstracts\ProjectType;
use ncc\Abstracts\RemoteSourceType;
use ncc\Abstracts\Scopes;
use ncc\Managers\RemoteSourcesManager;
use ncc\Objects\ProjectDetectionResults;
use ncc\ThirdParty\theseer\DirectoryScanner\DirectoryScanner;
class Resolver
{
@ -266,4 +269,46 @@
return $defined_source->Type;
}
/**
* Detects the project type from the specified path
*
* @param string $path
* @param array $exlucde
* @return ProjectDetectionResults
*/
public static function detectProjectType(string $path, array $exlucde=[]): ProjectDetectionResults
{
$Scanner = new DirectoryScanner();
$Scanner->setExcludes($exlucde);
$project_files = [
'composer.json',
'package.json',
];
$project_detection_results = new ProjectDetectionResults();
$project_detection_results->ProjectType = ProjectType::Unknown;
/** @var \SplFileInfo $item */
foreach($Scanner($path, true) as $item)
{
if(in_array($item->getFilename(), $project_files))
{
switch($item->getFilename())
{
case 'composer.json':
$project_detection_results->ProjectType = ProjectType::Composer;
$project_detection_results->ProjectPath = dirname($item->getPathname());
break;
case 'project.json':
$project_detection_results->ProjectType = ProjectType::Ncc;
$project_detection_results->ProjectPath = dirname($item->getPathname());
break;
}
}
}
return $project_detection_results;
}
}