From a7a208e349576106e5df2eed38b5cda8026390d9 Mon Sep 17 00:00:00 2001 From: Netkas Date: Sat, 9 Jul 2022 19:55:48 -0400 Subject: [PATCH] Added ProjectManager.php (\ncc\Managers > ProjectManager) **Not Completed** --- src/ncc/Managers/ProjectManager.php | 92 +++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/ncc/Managers/ProjectManager.php diff --git a/src/ncc/Managers/ProjectManager.php b/src/ncc/Managers/ProjectManager.php new file mode 100644 index 0000000..9f6dbf0 --- /dev/null +++ b/src/ncc/Managers/ProjectManager.php @@ -0,0 +1,92 @@ +SelectedDirectory = $selected_directory; + $this->detectProjectPath(); + } + + /** + * Attempts to resolve the project path from the selected directory + * Returns false if the selected directory is not a proper project or an initialized project + * + * @return bool + */ + private function detectProjectPath(): bool + { + $selected_directory = $this->SelectedDirectory; + + // Auto-resolve the trailing slash + if(substr($selected_directory, -1) !== '/') + { + $selected_directory .= $selected_directory . DIRECTORY_SEPARATOR; + } + + // Detect if the folder exists or not + if(!file_exists($selected_directory) || !is_dir($selected_directory)) + { + return false; + } + + // Detect if project.json exists in the directory + if(file_exists($selected_directory . 'project.json') == true) + { + $this->ProjectPath = $selected_directory . 'project.json'; + return true; + } + + // If not, check for pointer files + $pointer_files = [ + '.ppm_package', // Backwards Compatibility + '.ncc_project' + ]; + + foreach($pointer_files as $pointer_file) + { + if(file_exists($selected_directory . $pointer_file) && is_file($selected_directory . $pointer_file)) + { + // TODO: Complete this + } + } + + return true; + } + + /** + * Initializes the project sturcture + * + * @param Compiler $compiler + * @param string $name + * @param string $package + * @return bool + */ + public function initializeProject(Compiler $compiler, string $name, string $package): bool + { + + } + } \ No newline at end of file