1.0.0 Alpha Release #59

Merged
netkas merged 213 commits from v1.0.0_alpha into master 2023-01-29 23:27:58 +00:00
Showing only changes of commit 75aacc62fa - Show all commits

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;
}
}