diff --git a/.idea/webResources.xml b/.idea/webResources.xml index 31507ae..70d1aec 100644 --- a/.idea/webResources.xml +++ b/.idea/webResources.xml @@ -7,6 +7,7 @@ + diff --git a/scratch/exceptions_plan.txt b/scratch/exceptions_plan.txt new file mode 100644 index 0000000..4b7fbf7 --- /dev/null +++ b/scratch/exceptions_plan.txt @@ -0,0 +1,86 @@ +ConfigurationException + INVALID_PROJECT_CONFIGURATION + INVALID_SCOPE + INVALID_CREDENTIALS_ENTRY + COMPONENT_VERSION_NOT_FOUND + INVALID_PACKAGE_NAME + INVALID_VERSION_NUMBER + INVALID_PROJECT_NAME + BUILD_CONFIGURATION_NOT_FOUND + INVALID_PROJECT_BUILD_CONFIGURATION + INVALID_PROPERTY_VALUE + INVALID_VERSION_CONFIGURATION + INVALID_BUILD_CONFIGURATION + INVALID_DEPENDENCY_CONFIGURATION + PROJECT_CONFIGURATION_NOT_FOUND + UNDEFINED_EXECUTION_POLICY + INVALID_EXECUTION_POLICY_NAME + +AuthenticationException + ACCESS_DENIED + AUTHENTICATION_EXCEPTION + +ResourceNotFoundException + PROJECT_ALREADY_EXISTS + NO_UNITS_FOUND + PACKAGE_NOT_FOUND + VERSION_NOT_FOUND + NO_AVAILABLE_UNITS + PATH_NOT_FOUND + +PackageException + UNSUPPORTED_PACKAGE + INVALID_PACKAGE + PACKAGE_PREPARATION_FAILED + PACKAGE_PARSING_EXCEPTION + PACKAGE_LOCK_EXCEPTION + PACKAGE_ALREADY_INSTALLED + PACKAGE_FETCH_EXCEPTION + MISSING_DEPENDENCY + +IOException + IO_EXCEPTION + SYMLINK_EXCEPTION + +NetworkException + HTTP_EXCEPTION + UNSUPPORTED_REMOTE_SOURCE_TYPE + +ComposerException + COMPOSER_DISABLED_EXCEPTION + INTERNAL_COMPOSER_NOT_AVAILABLE + COMPOSER_NOT_AVAILABLE + COMPOSER_EXCEPTION + +GitException + GIT_CLONE_EXCEPTION + GIT_CHECKOUT_EXCEPTION + GITLAB_SERVICE_EXCEPTION + GIT_TAGS_EXCEPTION + +ArchiveException + UNSUPPORTED_ARCHIVE + ARCHIVE_EXCEPTION + +NotSupportedException + NOT_IMPLEMENTED + UNSUPPORTED_COMPILER_EXTENSION + UNSUPPORTED_EXTENSION_VERSION + UNSUPPORTED_COMPONENT_TYPE + NOT_SUPPORTED_EXCEPTION + UNSUPPORTED_PROJECT_TYPE + +RuntimeException + RUNTIME + BUILD_EXCEPTION + RUNNER_EXECUTION_EXCEPTION + USER_ABORTED_OPERATION + +IntegrityException + CONSTANT_READ_ONLY + INVALID_CONSTANT_NAME + COMPONENT_DECODE_EXCEPTION + RESOURCE_CHECKSUM_EXCEPTION + +AutoLoadException + AUTOLOAD_GENERATOR \ No newline at end of file diff --git a/src/ncc/Runtime.php b/src/ncc/Runtime.php index d1a233d..da020d4 100644 --- a/src/ncc/Runtime.php +++ b/src/ncc/Runtime.php @@ -61,8 +61,10 @@ */ private static function isImported(string $package, string $version=Versions::LATEST): bool { - if($version == Versions::LATEST) + if($version === Versions::LATEST) + { $version = self::getPackageManager()->getPackage($package)->getLatestVersion(); + } $entry = "$package=$version"; @@ -100,21 +102,25 @@ { throw new ImportException(sprintf('Failed to import package "%s" due to a package lock exception: %s', $package, $e->getMessage()), $e); } - if($package_entry == null) + if($package_entry === null) { throw new ImportException(sprintf("Package '%s' not found", $package)); } - if($version == Versions::LATEST) + if($version === Versions::LATEST) + { $version = $package_entry->getLatestVersion(); + } try { /** @var VersionEntry $version_entry */ $version_entry = $package_entry->getVersion($version); - if($version_entry == null) + if($version_entry === null) + { throw new VersionNotFoundException(); + } } catch (VersionNotFoundException $e) { @@ -124,7 +130,9 @@ try { if (self::isImported($package, $version)) + { return; + } } catch (PackageLockException $e) { @@ -136,7 +144,9 @@ // Import all dependencies first /** @var Dependency $dependency */ foreach($version_entry->Dependencies as $dependency) + { self::import($dependency->PackageName, $dependency->version, $options); + } } try @@ -173,8 +183,10 @@ { $package = self::getPackageManager()->getPackage($package); - if($package == null) + if($package === null) + { throw new PackageNotFoundException('Package not found (null entry error, possible bug)'); + } return $package->getDataPath(); } @@ -184,8 +196,11 @@ */ private static function getPackageManager(): PackageManager { - if(self::$package_manager == null) + if(self::$package_manager === null) + { self::$package_manager = new PackageManager(); + } + return self::$package_manager; }