Added method \ncc\Resolvers > detectProjectType()
https://git.n64.cc/nosial/ncc/-/issues/28
This commit is contained in:
parent
0da410ad31
commit
75aacc62fa
1 changed files with 45 additions and 0 deletions
|
@ -7,9 +7,12 @@
|
||||||
use ncc\Abstracts\BuiltinRemoteSourceType;
|
use ncc\Abstracts\BuiltinRemoteSourceType;
|
||||||
use ncc\Abstracts\DefinedRemoteSourceType;
|
use ncc\Abstracts\DefinedRemoteSourceType;
|
||||||
use ncc\Abstracts\LogLevel;
|
use ncc\Abstracts\LogLevel;
|
||||||
|
use ncc\Abstracts\ProjectType;
|
||||||
use ncc\Abstracts\RemoteSourceType;
|
use ncc\Abstracts\RemoteSourceType;
|
||||||
use ncc\Abstracts\Scopes;
|
use ncc\Abstracts\Scopes;
|
||||||
use ncc\Managers\RemoteSourcesManager;
|
use ncc\Managers\RemoteSourcesManager;
|
||||||
|
use ncc\Objects\ProjectDetectionResults;
|
||||||
|
use ncc\ThirdParty\theseer\DirectoryScanner\DirectoryScanner;
|
||||||
|
|
||||||
class Resolver
|
class Resolver
|
||||||
{
|
{
|
||||||
|
@ -266,4 +269,46 @@
|
||||||
|
|
||||||
return $defined_source->Type;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue