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