From 75aacc62fa9d5d2d63cda78af81a82194d498908 Mon Sep 17 00:00:00 2001 From: Netkas Date: Fri, 16 Dec 2022 00:40:35 -0500 Subject: [PATCH] Added method \ncc\Resolvers > detectProjectType() https://git.n64.cc/nosial/ncc/-/issues/28 --- src/ncc/Utilities/Resolver.php | 45 ++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/ncc/Utilities/Resolver.php b/src/ncc/Utilities/Resolver.php index cc3cb29..bd14ef2 100644 --- a/src/ncc/Utilities/Resolver.php +++ b/src/ncc/Utilities/Resolver.php @@ -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; + } } \ No newline at end of file