- Added new exception OperationException in \ncc\Exceptions to replace all generic related exceptions

- Removed unused exception `UnitsNotFoundException` in `\ncc\Exceptions` (not used)
 - Removed unused exception `NoAvailableUnitsException` in `\ncc\Exceptions` in favor for `OperationException`
 - Removed unused exception `InstallationException` in `\ncc\Exceptions` in favor for `OperationException`
 - Removed all unused exceptions from the project, reduced the number of exceptions in total.
This commit is contained in:
Netkas 2023-08-23 11:44:32 -04:00
parent 69d7b86534
commit eef360a8f7
No known key found for this signature in database
GPG key ID: 5DAF58535614062B
28 changed files with 102 additions and 500 deletions

View file

@ -8,7 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [1.0.4] - Unreleased ## [1.0.4] - Unreleased
This update introduces major changes in the codebase, including the removal of Win32 support, and the addition of new This update introduces major changes in the codebase, including the removal of Win32 support, and the addition of new
features. features and reduced the number of exceptions down to 15 exceptions.
### Added ### Added
- `LICENSE.md` & `license.md` are now detected as license files in `\ncc\Classes\ComposerExtension > ComposerSourceBuiltin > convertProject()` - `LICENSE.md` & `license.md` are now detected as license files in `\ncc\Classes\ComposerExtension > ComposerSourceBuiltin > convertProject()`
@ -17,6 +18,7 @@ features.
- Added a new interface class `BytecodeObjectInterface` which will be used to implement object types for compiled assets - Added a new interface class `BytecodeObjectInterface` which will be used to implement object types for compiled assets
- Added new exception `GitException` in `\ncc\Exceptions` to replace all git related exceptions - Added new exception `GitException` in `\ncc\Exceptions` to replace all git related exceptions
- Added new exception `PackageException` in `\ncc\Exceptions` to replace all package related exceptions - Added new exception `PackageException` in `\ncc\Exceptions` to replace all package related exceptions
- Added new exception `OperationException` in `\ncc\Exceptions` to replace all generic related exceptions
### Fixed ### Fixed
- Fixed MITM attack vector in `\ncc\Classes > HttpClient > prepareCurl()` - Fixed MITM attack vector in `\ncc\Classes > HttpClient > prepareCurl()`
@ -167,6 +169,10 @@ features.
- Removed unused exception `AutoloadGeneratorException` in `\ncc\Exceptions` in favor for `IOException` - Removed unused exception `AutoloadGeneratorException` in `\ncc\Exceptions` in favor for `IOException`
- Removed unused exception `SymlinkException` in `\ncc\Exceptions` in favor for `IOException` - Removed unused exception `SymlinkException` in `\ncc\Exceptions` in favor for `IOException`
- Removed unused exception `PackageLockException` in `\ncc\Exceptions` in favor for `IOException` - Removed unused exception `PackageLockException` in `\ncc\Exceptions` in favor for `IOException`
- Removed unused exception `UnitsNotFoundException` in `\ncc\Exceptions` (not used)
- Removed unused exception `NoAvailableUnitsException` in `\ncc\Exceptions` in favor for `OperationException`
- Removed unused exception `InstallationException` in `\ncc\Exceptions` in favor for `OperationException`
- Removed all unused exceptions from the project, reduced the number of exceptions in total.

View file

@ -22,8 +22,8 @@ AuthenticationException
* AUTHENTICATION_EXCEPTION * AUTHENTICATION_EXCEPTION
ResourceNotFoundException ResourceNotFoundException
PROJECT_ALREADY_EXISTS - PROJECT_ALREADY_EXISTS
NO_UNITS_FOUND - NO_UNITS_FOUND
VERSION_NOT_FOUND VERSION_NOT_FOUND
NO_AVAILABLE_UNITS NO_AVAILABLE_UNITS
@ -71,7 +71,8 @@ NotSupportedException
* UNSUPPORTED_REMOTE_SOURCE_TYPE * UNSUPPORTED_REMOTE_SOURCE_TYPE
* UNSUPPORTED_PACKAGE * UNSUPPORTED_PACKAGE
RuntimeException OperationException
RUNTIME_EXCEPTION
RUNTIME RUNTIME
BUILD_EXCEPTION BUILD_EXCEPTION
RUNNER_EXECUTION_EXCEPTION RUNNER_EXECUTION_EXCEPTION

View file

@ -28,7 +28,6 @@
use ncc\Enums\CompilerExtensionSupportedVersions; use ncc\Enums\CompilerExtensionSupportedVersions;
use ncc\Exceptions\ConfigurationException; use ncc\Exceptions\ConfigurationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Managers\ProjectManager; use ncc\Managers\ProjectManager;
use ncc\Objects\CliHelpSection; use ncc\Objects\CliHelpSection;
@ -45,7 +44,6 @@
* @return void * @return void
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public static function start($args): void public static function start($args): void
@ -65,7 +63,6 @@
* @return void * @return void
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public static function createProject($args): void public static function createProject($args): void

View file

@ -36,12 +36,11 @@
use ncc\Exceptions\ComposerException; use ncc\Exceptions\ComposerException;
use ncc\Exceptions\ConfigurationException; use ncc\Exceptions\ConfigurationException;
use ncc\Exceptions\NotSupportedException; use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\OperationException;
use ncc\Exceptions\PackageException; use ncc\Exceptions\PackageException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\RuntimeException; use ncc\Exceptions\RuntimeException;
use ncc\Exceptions\UserAbortedOperationException;
use ncc\Interfaces\ServiceSourceInterface; use ncc\Interfaces\ServiceSourceInterface;
use ncc\Managers\ProjectManager; use ncc\Managers\ProjectManager;
use ncc\ncc; use ncc\ncc;
@ -78,12 +77,11 @@
* @throws ComposerException * @throws ComposerException
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws NotSupportedException * @throws NotSupportedException
* @throws OperationException
* @throws PackageException * @throws PackageException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RuntimeException * @throws RuntimeException
* @throws UserAbortedOperationException
*/ */
public static function fetch(RemotePackageInput $packageInput): string public static function fetch(RemotePackageInput $packageInput): string
{ {
@ -113,11 +111,10 @@
* @throws ComposerException * @throws ComposerException
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws NotSupportedException * @throws NotSupportedException
* @throws OperationException
* @throws PackageException * @throws PackageException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws UserAbortedOperationException
*/ */
public static function fromLocal(string $path): string public static function fromLocal(string $path): string
{ {
@ -182,7 +179,6 @@
* @throws BuildException * @throws BuildException
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws NotSupportedException * @throws NotSupportedException
* @throws PackageException * @throws PackageException
* @throws PathNotFoundException * @throws PathNotFoundException
@ -202,7 +198,7 @@
} }
catch(JsonException $e) catch(JsonException $e)
{ {
throw new MalformedJsonException($composer_lock_path, $e); throw new IOException($composer_lock_path, $e);
} }
$filesystem = new Filesystem(); $filesystem = new Filesystem();
@ -508,8 +504,8 @@
* @return string * @return string
* @throws ComposerException * @throws ComposerException
* @throws IOException * @throws IOException
* @throws OperationException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws UserAbortedOperationException
*/ */
private static function require(string $vendor, string $package, ?string $version = null): string private static function require(string $vendor, string $package, ?string $version = null): string
{ {
@ -627,7 +623,7 @@
* @param string $path * @param string $path
* @param array $options * @param array $options
* @return void * @return void
* @throws UserAbortedOperationException * @throws OperationException
*/ */
private static function prepareProcess(Process $process, string $path, array $options): void private static function prepareProcess(Process $process, string $path, array $options): void
{ {
@ -642,7 +638,7 @@
{ {
if(!Console::getBooleanInput('Do you want to continue?')) if(!Console::getBooleanInput('Do you want to continue?'))
{ {
throw new UserAbortedOperationException('The operation was aborted by the user'); throw new OperationException('The operation was aborted by the user');
} }
// The user understands the risks and wants to continue // The user understands the risks and wants to continue
@ -664,7 +660,6 @@
* @param mixed $composer_package * @param mixed $composer_package
* @return ProjectConfiguration * @return ProjectConfiguration
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PackageException * @throws PackageException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */

View file

@ -27,9 +27,7 @@
use ncc\Classes\HttpClient; use ncc\Classes\HttpClient;
use ncc\Exceptions\AuthenticationException; use ncc\Exceptions\AuthenticationException;
use ncc\Exceptions\GitException; use ncc\Exceptions\GitException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\NetworkException; use ncc\Exceptions\NetworkException;
use ncc\Exceptions\VersionNotFoundException;
use ncc\Interfaces\RepositorySourceInterface; use ncc\Interfaces\RepositorySourceInterface;
use ncc\Objects\DefinedRemoteSource; use ncc\Objects\DefinedRemoteSource;
use ncc\Objects\HttpRequest; use ncc\Objects\HttpRequest;
@ -50,7 +48,6 @@
* @return RepositoryQueryResults * @return RepositoryQueryResults
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
*/ */
public static function getGitRepository(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry = null): RepositoryQueryResults public static function getGitRepository(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry = null): RepositoryQueryResults
@ -82,9 +79,7 @@
* @return RepositoryQueryResults * @return RepositoryQueryResults
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
* @throws VersionNotFoundException
*/ */
public static function getRelease(RemotePackageInput $package_input, DefinedRemoteSource $defined_remote_source, ?Entry $entry = null): RepositoryQueryResults public static function getRelease(RemotePackageInput $package_input, DefinedRemoteSource $defined_remote_source, ?Entry $entry = null): RepositoryQueryResults
{ {
@ -98,9 +93,7 @@
* @return RepositoryQueryResults * @return RepositoryQueryResults
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
* @throws VersionNotFoundException
*/ */
public static function getNccPackage(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry = null): RepositoryQueryResults public static function getNccPackage(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry = null): RepositoryQueryResults
{ {
@ -116,7 +109,6 @@
* @return array * @return array
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
*/ */
private static function getReleases(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry = null): array private static function getReleases(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry = null): array
@ -188,7 +180,6 @@
* @return array * @return array
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
*/ */
private static function getJsonResponse(HttpRequest $httpRequest, ?Entry $entry): array private static function getJsonResponse(HttpRequest $httpRequest, ?Entry $entry): array
@ -215,9 +206,7 @@
* @return mixed * @return mixed
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
* @throws VersionNotFoundException
*/ */
private static function processReleases(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry): mixed private static function processReleases(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry): mixed
{ {
@ -225,7 +214,7 @@
if (count($releases) === 0) if (count($releases) === 0)
{ {
throw new VersionNotFoundException('No releases found for the given repository.'); throw new GitException(sprintf('No releases found for %s/%s on %s.', $packageInput->vendor, $packageInput->package, $definedRemoteSource->host));
} }
if ($packageInput->version === Versions::LATEST) if ($packageInput->version === Versions::LATEST)
@ -269,7 +258,7 @@
if ($selected_version === null) if ($selected_version === null)
{ {
throw new VersionNotFoundException('No releases found for the given repository.'); throw new GitException(sprintf('Version %s not found for %s/%s on %s.', $packageInput->version, $packageInput->vendor, $packageInput->package, $definedRemoteSource->host));
} }
} }
else else
@ -279,7 +268,7 @@
if (!isset($releases[$selected_version])) if (!isset($releases[$selected_version]))
{ {
throw new VersionNotFoundException(sprintf('No releases found for the given repository. (Selected version: %s)', $selected_version)); throw new GitException(sprintf('Version %s not found for %s/%s on %s.', $packageInput->version, $packageInput->vendor, $packageInput->package, $definedRemoteSource->host));
} }
return $releases[$selected_version]; return $releases[$selected_version];

View file

@ -26,10 +26,8 @@
use ncc\Classes\HttpClient; use ncc\Classes\HttpClient;
use ncc\Exceptions\AuthenticationException; use ncc\Exceptions\AuthenticationException;
use ncc\Exceptions\GitException; use ncc\Exceptions\GitException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\NetworkException; use ncc\Exceptions\NetworkException;
use ncc\Exceptions\NotSupportedException; use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\ResourceNotFoundException;
use ncc\Interfaces\RepositorySourceInterface; use ncc\Interfaces\RepositorySourceInterface;
use ncc\Objects\DefinedRemoteSource; use ncc\Objects\DefinedRemoteSource;
use ncc\Objects\HttpRequest; use ncc\Objects\HttpRequest;
@ -51,7 +49,6 @@
* @return RepositoryQueryResults * @return RepositoryQueryResults
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
*/ */
public static function getGitRepository(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry=null): RepositoryQueryResults public static function getGitRepository(RemotePackageInput $packageInput, DefinedRemoteSource $definedRemoteSource, ?Entry $entry=null): RepositoryQueryResults
@ -93,9 +90,7 @@
* @return RepositoryQueryResults * @return RepositoryQueryResults
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
* @throws ResourceNotFoundException
*/ */
public static function getRelease(RemotePackageInput $package_input, DefinedRemoteSource $defined_remote_source, ?Entry $entry = null): RepositoryQueryResults public static function getRelease(RemotePackageInput $package_input, DefinedRemoteSource $defined_remote_source, ?Entry $entry = null): RepositoryQueryResults
{ {
@ -103,7 +98,7 @@
if(count($releases) === 0) if(count($releases) === 0)
{ {
throw new ResourceNotFoundException(sprintf('No releases found for the repository %s/%s (selected version: %s)', $package_input->vendor, $package_input->package, $package_input->version)); throw new GitException(sprintf('No releases found for the repository %s/%s (selected version: %s)', $package_input->vendor, $package_input->package, $package_input->version));
} }
// Query the latest package only // Query the latest package only
@ -148,7 +143,7 @@
if($selected_version === null) if($selected_version === null)
{ {
throw new ResourceNotFoundException(sprintf('Could not find a release for %s/%s with the version %s', $package_input->vendor, $package_input->package, $package_input->version)); throw new GitException(sprintf('Could not find a release for %s/%s with the version %s', $package_input->vendor, $package_input->package, $package_input->version));
} }
} }
else else
@ -158,7 +153,7 @@
if(!isset($releases[$selected_version])) if(!isset($releases[$selected_version]))
{ {
throw new ResourceNotFoundException(sprintf('Could not find a release for %s/%s with the version %s', $package_input->vendor, $package_input->package, $package_input->version)); throw new GitException(sprintf('Could not find a release for %s/%s with the version %s', $package_input->vendor, $package_input->package, $package_input->version));
} }
return $releases[$selected_version]; return $releases[$selected_version];
@ -186,7 +181,6 @@
* @return array * @return array
* @throws AuthenticationException * @throws AuthenticationException
* @throws GitException * @throws GitException
* @throws MalformedJsonException
* @throws NetworkException * @throws NetworkException
*/ */
private static function getReleases(string $owner, string $repository, DefinedRemoteSource $definedRemoteSource, ?Entry $entry): array private static function getReleases(string $owner, string $repository, DefinedRemoteSource $definedRemoteSource, ?Entry $entry): array

View file

@ -34,10 +34,8 @@
use ncc\Exceptions\BuildException; use ncc\Exceptions\BuildException;
use ncc\Exceptions\ConfigurationException; use ncc\Exceptions\ConfigurationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\NotSupportedException; use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Exceptions\RunnerExecutionException;
use ncc\Interfaces\CompilerInterface; use ncc\Interfaces\CompilerInterface;
use ncc\Managers\ProjectManager; use ncc\Managers\ProjectManager;
use ncc\ncc; use ncc\ncc;
@ -60,7 +58,6 @@
* @throws BuildException * @throws BuildException
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws NotSupportedException * @throws NotSupportedException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
@ -154,8 +151,8 @@
* @param ProjectConfiguration $configuration * @param ProjectConfiguration $configuration
* @return array * @return array
* @throws IOException * @throws IOException
* @throws NotSupportedException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RunnerExecutionException
*/ */
public static function compileExecutionPolicies(string $path, ProjectConfiguration $configuration): array public static function compileExecutionPolicies(string $path, ProjectConfiguration $configuration): array
{ {

View file

@ -25,9 +25,9 @@
use ncc\Enums\Scopes; use ncc\Enums\Scopes;
use ncc\Exceptions\AuthenticationException; use ncc\Exceptions\AuthenticationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\NoAvailableUnitsException; use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\OperationException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Exceptions\RunnerExecutionException;
use ncc\Managers\ExecutionPointerManager; use ncc\Managers\ExecutionPointerManager;
use ncc\Objects\Package\ExecutionUnit; use ncc\Objects\Package\ExecutionUnit;
use ncc\Utilities\Resolver; use ncc\Utilities\Resolver;
@ -43,9 +43,9 @@
* @return void * @return void
* @throws AuthenticationException * @throws AuthenticationException
* @throws IOException * @throws IOException
* @throws NoAvailableUnitsException * @throws OperationException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RunnerExecutionException * @throws NotSupportedException
*/ */
public static function temporaryExecute(string $package, string $version, ExecutionUnit $unit): void public static function temporaryExecute(string $package, string $version, ExecutionUnit $unit): void
{ {

View file

@ -35,10 +35,9 @@
use ncc\Exceptions\BuildException; use ncc\Exceptions\BuildException;
use ncc\Exceptions\ConfigurationException; use ncc\Exceptions\ConfigurationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\OperationException;
use ncc\Exceptions\PackageException; use ncc\Exceptions\PackageException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Exceptions\RunnerExecutionException;
use ncc\Exceptions\VersionNotFoundException;
use ncc\Interfaces\CompilerInterface; use ncc\Interfaces\CompilerInterface;
use ncc\Managers\PackageLockManager; use ncc\Managers\PackageLockManager;
use ncc\Objects\Package; use ncc\Objects\Package;
@ -86,6 +85,7 @@
* @param string $build_configuration * @param string $build_configuration
* @return void * @return void
* @throws ConfigurationException * @throws ConfigurationException
* @throws OperationException
* @throws PackageException * @throws PackageException
*/ */
public function prepare(string $build_configuration=BuildConfigurationValues::DEFAULT): void public function prepare(string $build_configuration=BuildConfigurationValues::DEFAULT): void
@ -279,7 +279,7 @@
$version = $package->getVersion($dependency->Version); $version = $package->getVersion($dependency->Version);
if($version === null) if($version === null)
{ {
throw new VersionNotFoundException('Cannot find version ' . $dependency->Version . ' for dependency ' . $dependency->Name); throw new OperationException('Cannot find version ' . $dependency->Version . ' for dependency ' . $dependency->Name);
} }
Console::outDebug(sprintf('copying shadow package %s=%s to %s', $dependency->Name, $dependency->Version, $out_path)); Console::outDebug(sprintf('copying shadow package %s=%s to %s', $dependency->Name, $dependency->Version, $out_path));
@ -327,7 +327,6 @@
* @throws BuildException * @throws BuildException
* @throws IOException * @throws IOException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RunnerExecutionException
*/ */
public function build(): ?Package public function build(): ?Package
{ {
@ -469,7 +468,6 @@
* @return void * @return void
* @throws IOException * @throws IOException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RunnerExecutionException
*/ */
public function compileExecutionPolicies(): void public function compileExecutionPolicies(): void
{ {

View file

@ -28,71 +28,26 @@
*/ */
final class ExceptionCodes final class ExceptionCodes
{ {
/**
* @see MalformedJsonException
*/
public const MALFORMED_JSON = -1705;
/** /**
* @see RuntimeException * @see RuntimeException
*/ */
public const RUNTIME = -1706; public const RUNTIME = -1706;
/**
* @see ConstantReadonlyException
*/
public const CONSTANT_READ_ONLY = -1709;
/**
* @see NoUnitsFoundException
*/
public const NO_UNITS_FOUND = -1715;
/** /**
* @see BuildException * @see BuildException
*/ */
public const BUILD_EXCEPTION = -1727; public const BUILD_EXCEPTION = -1727;
/**
* @see InstallationException
*/
public const INSTALLATION_EXCEPTION = -1730;
/** /**
* @see IOException * @see IOException
*/ */
public const IO_EXCEPTION = -1735; public const IO_EXCEPTION = -1735;
/**
* @see VersionNotFoundException
*/
public const VERSION_NOT_FOUND = -1737;
/**
* @see RunnerExecutionException
*/
public const RUNNER_EXECUTION_EXCEPTION = -1741;
/**
* @see NoAvailableUnitsException
*/
public const NO_AVAILABLE_UNITS = -1742;
/** /**
* @see ComposerException * @see ComposerException
*/ */
public const COMPOSER_EXCEPTION = -1749; public const COMPOSER_EXCEPTION = -1749;
/**
* @see UserAbortedOperationException
*/
public const USER_ABORTED_OPERATION = -1750;
/**
* @see ImportException
*/
public const IMPORT_EXCEPTION = -1757;
/** /**
* @see AuthenticationException * @see AuthenticationException
*/ */
@ -138,22 +93,19 @@
*/ */
public const INTEGRITY_EXCEPTION = -1775; public const INTEGRITY_EXCEPTION = -1775;
/**
* @see OperationException
*/
public const OPERATION_EXCEPTION = -1776;
/** /**
* All the exception codes from NCC * All the exception codes from NCC
*/ */
public const All = [ public const All = [
self::MALFORMED_JSON,
self::RUNTIME, self::RUNTIME,
self::CONSTANT_READ_ONLY,
self::NO_UNITS_FOUND,
self::BUILD_EXCEPTION, self::BUILD_EXCEPTION,
self::INSTALLATION_EXCEPTION,
self::IO_EXCEPTION, self::IO_EXCEPTION,
self::VERSION_NOT_FOUND,
self::RUNNER_EXECUTION_EXCEPTION,
self::NO_AVAILABLE_UNITS,
self::COMPOSER_EXCEPTION, self::COMPOSER_EXCEPTION,
self::USER_ABORTED_OPERATION,
self::AUTHENTICATION_EXCEPTION, self::AUTHENTICATION_EXCEPTION,
self::NOT_SUPPORTED_EXCEPTION, self::NOT_SUPPORTED_EXCEPTION,
self::ARCHIVE_EXCEPTION, self::ARCHIVE_EXCEPTION,
@ -162,6 +114,7 @@
self::CONFIGURATION_EXCEPTION, self::CONFIGURATION_EXCEPTION,
self::PACKAGE_EXCEPTION, self::PACKAGE_EXCEPTION,
self::NETWORK_EXCEPTION, self::NETWORK_EXCEPTION,
self::INTEGRITY_EXCEPTION self::INTEGRITY_EXCEPTION,
self::OPERATION_EXCEPTION
]; ];
} }

View file

@ -1,40 +0,0 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\Exceptions;
use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class ComponentChecksumException extends Exception
{
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::COMPONENT_CHECKSUM_EXCEPTION, $previous);
}
}

View file

@ -1,39 +0,0 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\Exceptions;
use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class InstallationException extends Exception
{
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::INSTALLATION_EXCEPTION, $previous);
}
}

View file

@ -1,40 +0,0 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\Exceptions;
use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class MalformedJsonException extends Exception
{
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::MALFORMED_JSON, $previous);
}
}

View file

@ -1,39 +0,0 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\Exceptions;
use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class NoAvailableUnitsException extends Exception
{
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::NO_AVAILABLE_UNITS, $previous);
}
}

View file

@ -1,39 +0,0 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\Exceptions;
use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class NoUnitsFoundException extends Exception
{
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::NO_UNITS_FOUND, $previous);
}
}

View file

@ -22,10 +22,14 @@
namespace ncc\Exceptions; namespace ncc\Exceptions;
class ResourceNotFoundException extends \Exception use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class OperationException extends Exception
{ {
public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null) public function __construct(string $message = "", ?Throwable $previous = null)
{ {
parent::__construct($message, $code, $previous); parent::__construct($message, ExceptionCodes::OPERATION_EXCEPTION, $previous);
} }
} }

View file

@ -1,39 +0,0 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\Exceptions;
use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class RunnerExecutionException extends Exception
{
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::RUNNER_EXECUTION_EXCEPTION, $previous);
}
}

View file

@ -1,39 +0,0 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\Exceptions;
use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class UserAbortedOperationException extends Exception
{
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::USER_ABORTED_OPERATION, $previous);
}
}

View file

@ -1,39 +0,0 @@
<?php
/*
* Copyright (c) Nosial 2022-2023, all rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
* associated documentation files (the "Software"), to deal in the Software without restriction, including without
* limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
* Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
namespace ncc\Exceptions;
use Exception;
use ncc\Enums\ExceptionCodes;
use Throwable;
class VersionNotFoundException extends Exception
{
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::VERSION_NOT_FOUND, $previous);
}
}

View file

@ -23,7 +23,6 @@
namespace ncc\Interfaces; namespace ncc\Interfaces;
use Exception; use Exception;
use ncc\Exceptions\ComponentChecksumException;
use ncc\Objects\InstallationPaths; use ncc\Objects\InstallationPaths;
use ncc\Objects\Package; use ncc\Objects\Package;
use ncc\Objects\Package\Component; use ncc\Objects\Package\Component;
@ -42,7 +41,6 @@ namespace ncc\Interfaces;
* *
* @param Component $component * @param Component $component
* @return string|null * @return string|null
* @throws ComponentChecksumException
*/ */
public function processComponent(Package\Component $component): ?string; public function processComponent(Package\Component $component): ?string;

View file

@ -37,9 +37,9 @@
use ncc\Classes\PythonExtension\PythonRunner; use ncc\Classes\PythonExtension\PythonRunner;
use ncc\Exceptions\AuthenticationException; use ncc\Exceptions\AuthenticationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\NoAvailableUnitsException; use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\OperationException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Exceptions\RunnerExecutionException;
use ncc\Objects\ExecutionPointers; use ncc\Objects\ExecutionPointers;
use ncc\Objects\Package; use ncc\Objects\Package;
use ncc\Objects\Package\ExecutionUnit; use ncc\Objects\Package\ExecutionUnit;
@ -165,8 +165,9 @@
* @param ExecutionUnit $unit * @param ExecutionUnit $unit
* @param bool $temporary * @param bool $temporary
* @return void * @return void
* @throws AuthenticationException
* @throws IOException * @throws IOException
* @throws RunnerExecutionException * @throws NotSupportedException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public function addUnit(string $package, string $version, ExecutionUnit $unit, bool $temporary=false): void public function addUnit(string $package, string $version, ExecutionUnit $unit, bool $temporary=false): void
@ -210,7 +211,7 @@
Runners::PYTHON_2 => Python2Runner::getFileExtension(), Runners::PYTHON_2 => Python2Runner::getFileExtension(),
Runners::PYTHON_3 => Python3Runner::getFileExtension(), Runners::PYTHON_3 => Python3Runner::getFileExtension(),
Runners::LUA => LuaRunner::getFileExtension(), Runners::LUA => LuaRunner::getFileExtension(),
default => throw new RunnerExecutionException('The runner \'' . $unit->execution_policy->runner . '\' is not supported'), default => throw new NotSupportedException('The runner \'' . $unit->execution_policy->runner . '\' is not supported'),
}; };
Console::outDebug(sprintf('bin_file=%s', $bin_file)); Console::outDebug(sprintf('bin_file=%s', $bin_file));
@ -265,7 +266,9 @@
* @param string $version * @param string $version
* @param string $name * @param string $name
* @return bool * @return bool
* @throws AuthenticationException
* @throws IOException * @throws IOException
* @throws PathNotFoundException
*/ */
public function removeUnit(string $package, string $version, string $name): bool public function removeUnit(string $package, string $version, string $name): bool
{ {
@ -326,6 +329,7 @@
* @param string $version * @param string $version
* @return array * @return array
* @throws IOException * @throws IOException
* @throws PathNotFoundException
*/ */
public function getUnits(string $package, string $version): array public function getUnits(string $package, string $version): array
{ {
@ -363,8 +367,8 @@
* @param array $args * @param array $args
* @return int * @return int
* @throws IOException * @throws IOException
* @throws NoAvailableUnitsException * @throws OperationException
* @throws RunnerExecutionException * @throws PathNotFoundException
*/ */
public function executeUnit(string $package, string $version, string $name, array $args=[]): int public function executeUnit(string $package, string $version, string $name, array $args=[]): int
{ {
@ -375,7 +379,7 @@
if(!file_exists($package_config_path)) if(!file_exists($package_config_path))
{ {
throw new NoAvailableUnitsException('There is no available units for \'' . $package . '=' .$version .'\''); throw new OperationException('There is no available units for \'' . $package . '=' .$version .'\'');
} }
$execution_pointers = ExecutionPointers::fromArray(ZiProto::decode(IO::fread($package_config_path))); $execution_pointers = ExecutionPointers::fromArray(ZiProto::decode(IO::fread($package_config_path)));
@ -383,7 +387,7 @@
if($unit === null) if($unit === null)
{ {
throw new RunnerExecutionException('The execution unit \'' . $name . '\' was not found for \'' . $package . '=' .$version .'\''); throw new OperationException('The execution unit \'' . $name . '\' was not found for \'' . $package . '=' .$version .'\'');
} }
Console::outDebug(sprintf('unit=%s', $unit->execution_policy->name)); Console::outDebug(sprintf('unit=%s', $unit->execution_policy->name));
@ -453,7 +457,6 @@
} }
} }
Console::outDebug(sprintf('working_directory=%s', $process->getWorkingDirectory())); Console::outDebug(sprintf('working_directory=%s', $process->getWorkingDirectory()));
Console::outDebug(sprintf('timeout=%s', (int)$process->getTimeout())); Console::outDebug(sprintf('timeout=%s', (int)$process->getTimeout()));
Console::outDebug(sprintf('silent=%s', ($unit->execution_policy->execute->silent ? 'true' : 'false'))); Console::outDebug(sprintf('silent=%s', ($unit->execution_policy->execute->silent ? 'true' : 'false')));
@ -516,10 +519,11 @@
* @param Package $package * @param Package $package
* @param string $unit_name * @param string $unit_name
* @return void * @return void
* @throws AuthenticationException
* @throws IOException * @throws IOException
* @throws NoAvailableUnitsException * @throws NotSupportedException
* @throws OperationException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RunnerExecutionException
*/ */
public function temporaryExecute(Package $package, string $unit_name): void public function temporaryExecute(Package $package, string $unit_name): void
{ {
@ -528,7 +532,7 @@
if($unit === null) if($unit === null)
{ {
throw new NoAvailableUnitsException(sprintf('No execution unit named \'%s\' is available for package \'%s\'', $unit_name, $package->assembly->package)); throw new OperationException(sprintf('No execution unit named \'%s\' is available for package \'%s\'', $unit_name, $package->assembly->package));
} }
// Get the required units // Get the required units
@ -577,8 +581,8 @@
* @param Process|null $process * @param Process|null $process
* @return bool * @return bool
* @throws IOException * @throws IOException
* @throws NoAvailableUnitsException * @throws OperationException
* @throws RunnerExecutionException * @throws PathNotFoundException
*/ */
public function handleExit(string $package, string $version, ExitHandle $exit_handler, ?Process $process=null): bool public function handleExit(string $package, string $version, ExitHandle $exit_handler, ?Process $process=null): bool
{ {

View file

@ -39,13 +39,11 @@
use ncc\Classes\PhpExtension\PhpInstaller; use ncc\Classes\PhpExtension\PhpInstaller;
use ncc\CLI\Main; use ncc\CLI\Main;
use ncc\Exceptions\AuthenticationException; use ncc\Exceptions\AuthenticationException;
use ncc\Exceptions\InstallationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\NotSupportedException; use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\OperationException;
use ncc\Exceptions\PackageException; use ncc\Exceptions\PackageException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Exceptions\RunnerExecutionException;
use ncc\Exceptions\VersionNotFoundException;
use ncc\Objects\DefinedRemoteSource; use ncc\Objects\DefinedRemoteSource;
use ncc\Objects\InstallationPaths; use ncc\Objects\InstallationPaths;
use ncc\Objects\Package; use ncc\Objects\Package;
@ -99,12 +97,10 @@
* @return string * @return string
* @throws AuthenticationException * @throws AuthenticationException
* @throws IOException * @throws IOException
* @throws InstallationException
* @throws NotSupportedException * @throws NotSupportedException
* @throws OperationException
* @throws PackageException * @throws PackageException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RunnerExecutionException
* @throws VersionNotFoundException
*/ */
public function install(string $package_path, ?Entry $entry=null, array $options=[]): string public function install(string $package_path, ?Entry $entry=null, array $options=[]): string
{ {
@ -230,7 +226,7 @@
} }
catch(Exception $e) catch(Exception $e)
{ {
throw new InstallationException('Error while creating directory, ' . $e->getMessage(), $e); throw new IOException('Error while creating directory, ' . $e->getMessage(), $e);
} }
try try
@ -245,7 +241,7 @@
} }
catch(Exception $e) catch(Exception $e)
{ {
throw new InstallationException('Cannot initialize package install, ' . $e->getMessage(), $e); throw new OperationException('Cannot initialize package install, ' . $e->getMessage(), $e);
} }
// Execute the pre-installation stage before the installation stage // Execute the pre-installation stage before the installation stage
@ -257,7 +253,7 @@
} }
catch (Exception $e) catch (Exception $e)
{ {
throw new InstallationException('Pre installation stage failed, ' . $e->getMessage(), $e); throw new OperationException('Pre installation stage failed, ' . $e->getMessage(), $e);
} }
if($package->installer?->PreInstall !== null && count($package->installer->PreInstall) > 0) if($package->installer?->PreInstall !== null && count($package->installer->PreInstall) > 0)
@ -301,7 +297,7 @@
} }
catch(Exception $e) catch(Exception $e)
{ {
throw new InstallationException('Cannot process one or more components, ' . $e->getMessage(), $e); throw new OperationException('Cannot process one or more components, ' . $e->getMessage(), $e);
} }
++$current_steps; ++$current_steps;
@ -331,7 +327,7 @@
} }
catch(Exception $e) catch(Exception $e)
{ {
throw new InstallationException('Cannot process one or more resources, ' . $e->getMessage(), $e); throw new OperationException('Cannot process one or more resources, ' . $e->getMessage(), $e);
} }
++$current_steps; ++$current_steps;
@ -367,7 +363,7 @@
{ {
if($package->main_execution_policy === null) if($package->main_execution_policy === null)
{ {
throw new InstallationException('Cannot create symlink, no main execution policy is defined'); throw new OperationException('Cannot create symlink, no main execution policy is defined');
} }
Console::outDebug(sprintf('creating symlink to %s', $package->assembly->package)); Console::outDebug(sprintf('creating symlink to %s', $package->assembly->package));
@ -388,7 +384,7 @@
} }
catch (Exception $e) catch (Exception $e)
{ {
throw new InstallationException('Post installation stage failed, ' . $e->getMessage(), $e); throw new OperationException('Post installation stage failed, ' . $e->getMessage(), $e);
} }
if($package->installer?->PostInstall !== null && count($package->installer->PostInstall) > 0) if($package->installer?->PostInstall !== null && count($package->installer->PostInstall) > 0)
@ -446,8 +442,8 @@
* @param string $source * @param string $source
* @param Entry|null $entry * @param Entry|null $entry
* @return string * @return string
* @throws InstallationException
* @throws NotSupportedException * @throws NotSupportedException
* @throws OperationException
* @throws PackageException * @throws PackageException
*/ */
public function fetchFromSource(string $source, ?Entry $entry=null): string public function fetchFromSource(string $source, ?Entry $entry=null): string
@ -498,7 +494,7 @@
$source = (new RemoteSourcesManager())->getRemoteSource($input->source); $source = (new RemoteSourcesManager())->getRemoteSource($input->source);
if($source === null) if($source === null)
{ {
throw new InstallationException('Remote source ' . $input->source . ' is not defined'); throw new OperationException('Remote source ' . $input->source . ' is not defined');
} }
$repositoryQueryResults = Functions::getRepositoryQueryResults($input, $source, $entry); $repositoryQueryResults = Functions::getRepositoryQueryResults($input, $source, $entry);
@ -613,7 +609,7 @@
* @param Entry|null $entry * @param Entry|null $entry
* @param array $options * @param array $options
* @return string * @return string
* @throws InstallationException * @throws OperationException
*/ */
public function installFromSource(string $source, ?Entry $entry, array $options=[]): string public function installFromSource(string $source, ?Entry $entry, array $options=[]): string
{ {
@ -626,7 +622,7 @@
} }
catch(Exception $e) catch(Exception $e)
{ {
throw new InstallationException('Cannot install package from source, ' . $e->getMessage(), $e); throw new OperationException('Cannot install package from source, ' . $e->getMessage(), $e);
} }
} }
@ -639,12 +635,10 @@
* @return void * @return void
* @throws AuthenticationException * @throws AuthenticationException
* @throws IOException * @throws IOException
* @throws InstallationException
* @throws NotSupportedException * @throws NotSupportedException
* @throws OperationException
* @throws PackageException * @throws PackageException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RunnerExecutionException
* @throws VersionNotFoundException
*/ */
private function processDependency(Dependency $dependency, Package $package, string $package_path, ?Entry $entry=null, array $options=[]): void private function processDependency(Dependency $dependency, Package $package, string $package_path, ?Entry $entry=null, array $options=[]): void
{ {
@ -790,7 +784,7 @@
$version = $package->getVersion($exploded[1]); $version = $package->getVersion($exploded[1]);
if($version === null) if($version === null)
{ {
throw new VersionNotFoundException('Version ' . $exploded[1] . ' not found for package ' . $exploded[0]); throw new OperationException('Version ' . $exploded[1] . ' not found for package ' . $exploded[0]);
} }
foreach ($version->Dependencies as $dependency) foreach ($version->Dependencies as $dependency)
@ -872,6 +866,7 @@
* @throws AuthenticationException * @throws AuthenticationException
* @throws IOException * @throws IOException
* @throws PackageException * @throws PackageException
* @throws PathNotFoundException
*/ */
public function uninstallPackageVersion(string $package, string $version): void public function uninstallPackageVersion(string $package, string $version): void
{ {
@ -987,7 +982,7 @@
/** /**
* @param Package $package * @param Package $package
* @param InstallationPaths $paths * @param InstallationPaths $paths
* @throws InstallationException * @throws OperationException
*/ */
private static function initData(Package $package, InstallationPaths $paths): void private static function initData(Package $package, InstallationPaths $paths): void
{ {
@ -1020,7 +1015,7 @@
} }
catch (IOException $e) catch (IOException $e)
{ {
throw new InstallationException('Cannot write to file \'' . $file . '\', ' . $e->getMessage(), $e); throw new OperationException('Cannot write to file \'' . $file . '\', ' . $e->getMessage(), $e);
} }
} }
} }

View file

@ -31,7 +31,6 @@
use ncc\Exceptions\BuildException; use ncc\Exceptions\BuildException;
use ncc\Exceptions\ConfigurationException; use ncc\Exceptions\ConfigurationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\NotSupportedException; use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Objects\ProjectConfiguration; use ncc\Objects\ProjectConfiguration;
@ -69,7 +68,6 @@
* @param string $path * @param string $path
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public function __construct(string $path) public function __construct(string $path)
@ -105,7 +103,6 @@
* @param array $options * @param array $options
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
*/ */
public function initializeProject(Compiler $compiler, string $name, string $package, ?string $src=null, array $options=[]): void public function initializeProject(Compiler $compiler, string $name, string $package, ?string $src=null, array $options=[]): void
{ {
@ -213,7 +210,6 @@
* @return void * @return void
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public function load(): void public function load(): void
@ -230,7 +226,6 @@
* Saves the project configuration * Saves the project configuration
* *
* @return void * @return void
* @throws MalformedJsonException
*/ */
public function save(): void public function save(): void
{ {
@ -248,7 +243,6 @@
* @return ProjectConfiguration * @return ProjectConfiguration
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public function getProjectConfiguration(): ProjectConfiguration public function getProjectConfiguration(): ProjectConfiguration
@ -280,7 +274,6 @@
* @throws BuildException * @throws BuildException
* @throws ConfigurationException * @throws ConfigurationException
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws NotSupportedException * @throws NotSupportedException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */

View file

@ -25,7 +25,7 @@
namespace ncc\Objects; namespace ncc\Objects;
use ncc\Enums\Versions; use ncc\Enums\Versions;
use ncc\Exceptions\VersionNotFoundException; use ncc\Exceptions\IOException;
use ncc\Objects\PackageLock\PackageEntry; use ncc\Objects\PackageLock\PackageEntry;
use ncc\Utilities\Console; use ncc\Utilities\Console;
use ncc\Utilities\Functions; use ncc\Utilities\Functions;
@ -183,7 +183,7 @@
{ {
$version_entry = $package_entry->getVersion($version); $version_entry = $package_entry->getVersion($version);
} }
catch (VersionNotFoundException $e) catch (IOException $e)
{ {
unset($e); unset($e);
return false; return false;

View file

@ -28,7 +28,6 @@
use ncc\Enums\Options\BuildConfigurationValues; use ncc\Enums\Options\BuildConfigurationValues;
use ncc\Exceptions\ConfigurationException; use ncc\Exceptions\ConfigurationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\NotSupportedException; use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Interfaces\BytecodeObjectInterface; use ncc\Interfaces\BytecodeObjectInterface;
@ -366,7 +365,6 @@
* @param string $path * @param string $path
* @param bool $bytecode * @param bool $bytecode
* @return void * @return void
* @throws MalformedJsonException
* @noinspection PhpUnused * @noinspection PhpUnused
*/ */
public function toFile(string $path, bool $bytecode=false): void public function toFile(string $path, bool $bytecode=false): void
@ -386,7 +384,6 @@
* @param string $path * @param string $path
* @return ProjectConfiguration * @return ProjectConfiguration
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public static function fromFile(string $path): ProjectConfiguration public static function fromFile(string $path): ProjectConfiguration

View file

@ -42,10 +42,9 @@
use ncc\Exceptions\ArchiveException; use ncc\Exceptions\ArchiveException;
use ncc\Exceptions\AuthenticationException; use ncc\Exceptions\AuthenticationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\NetworkException; use ncc\Exceptions\NetworkException;
use ncc\Exceptions\NotSupportedException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Exceptions\RunnerExecutionException;
use ncc\Managers\ConfigurationManager; use ncc\Managers\ConfigurationManager;
use ncc\Managers\CredentialManager; use ncc\Managers\CredentialManager;
use ncc\Managers\PackageLockManager; use ncc\Managers\PackageLockManager;
@ -121,7 +120,6 @@
* @param int $flags * @param int $flags
* @return mixed * @return mixed
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public static function loadJsonFile(string $path, int $flags=0): mixed public static function loadJsonFile(string $path, int $flags=0): mixed
@ -140,7 +138,7 @@
* @param string $json * @param string $json
* @param int $flags * @param int $flags
* @return mixed * @return mixed
* @throws MalformedJsonException * @throws IOException
*/ */
public static function loadJson(string $json, int $flags=0): mixed public static function loadJson(string $json, int $flags=0): mixed
{ {
@ -150,7 +148,7 @@
} }
catch(Throwable $e) catch(Throwable $e)
{ {
throw new MalformedJsonException($e->getMessage(), $e); throw new IOException($e->getMessage(), $e);
} }
} }
@ -160,7 +158,7 @@
* @param mixed $value * @param mixed $value
* @param int $flags * @param int $flags
* @return string * @return string
* @throws MalformedJsonException * @throws IOException
*/ */
public static function encodeJson(mixed $value, int $flags=0): string public static function encodeJson(mixed $value, int $flags=0): string
{ {
@ -175,7 +173,7 @@
} }
catch (JsonException $e) catch (JsonException $e)
{ {
throw new MalformedJsonException($e->getMessage(), $e); throw new IOException($e->getMessage(), $e);
} }
} }
@ -186,7 +184,6 @@
* @param string $path * @param string $path
* @param int $flags * @param int $flags
* @return void * @return void
* @throws MalformedJsonException
*/ */
public static function encodeJsonFile(mixed $value, string $path, int $flags=0): void public static function encodeJsonFile(mixed $value, string $path, int $flags=0): void
{ {
@ -291,8 +288,8 @@
* @param ExecutionPolicy $policy * @param ExecutionPolicy $policy
* @return ExecutionUnit * @return ExecutionUnit
* @throws IOException * @throws IOException
* @throws NotSupportedException
* @throws PathNotFoundException * @throws PathNotFoundException
* @throws RunnerExecutionException
*/ */
public static function compileRunner(string $path, ExecutionPolicy $policy): ExecutionUnit public static function compileRunner(string $path, ExecutionPolicy $policy): ExecutionUnit
{ {
@ -305,7 +302,7 @@
Runners::PYTHON_2 => Python2Runner::processUnit($path, $policy), Runners::PYTHON_2 => Python2Runner::processUnit($path, $policy),
Runners::PYTHON_3 => Python3Runner::processUnit($path, $policy), Runners::PYTHON_3 => Python3Runner::processUnit($path, $policy),
Runners::LUA => LuaRunner::processUnit($path, $policy), Runners::LUA => LuaRunner::processUnit($path, $policy),
default => throw new RunnerExecutionException('The runner \'' . $policy->runner . '\' is not supported'), default => throw new NotSupportedException('The runner \'' . $policy->runner . '\' is not supported'),
}; };
} }
@ -419,7 +416,6 @@
* @param string $path * @param string $path
* @return ComposerJson * @return ComposerJson
* @throws IOException * @throws IOException
* @throws MalformedJsonException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public static function loadComposerJson(string $path): ComposerJson public static function loadComposerJson(string $path): ComposerJson
@ -432,7 +428,7 @@
} }
catch(JsonException $e) catch(JsonException $e)
{ {
throw new MalformedJsonException('Cannot parse composer.json, ' . $e->getMessage(), $e); throw new IOException('Cannot parse composer.json, ' . $e->getMessage(), $e);
} }
} }

View file

@ -25,7 +25,7 @@
use InvalidArgumentException; use InvalidArgumentException;
use ncc\Enums\Scopes; use ncc\Enums\Scopes;
use ncc\Exceptions\ConfigurationException; use ncc\Exceptions\ConfigurationException;
use ncc\Exceptions\RunnerExecutionException; use ncc\Exceptions\OperationException;
use ncc\ThirdParty\Symfony\Process\ExecutableFinder; use ncc\ThirdParty\Symfony\Process\ExecutableFinder;
class PathFinder class PathFinder
@ -219,7 +219,7 @@
* *
* @param string $runner * @param string $runner
* @return string * @return string
* @throws RunnerExecutionException * @throws OperationException
*/ */
public static function findRunner(string $runner): string public static function findRunner(string $runner): string
{ {
@ -242,6 +242,6 @@
return $exec_path; return $exec_path;
} }
throw new RunnerExecutionException(sprintf('Unable to find \'%s\' executable', $runner)); throw new OperationException(sprintf('Unable to find \'%s\' executable', $runner));
} }
} }

View file

@ -26,10 +26,10 @@
namespace ncc; namespace ncc;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\PathNotFoundException; use ncc\Exceptions\PathNotFoundException;
use ncc\Objects\NccVersionInformation; use ncc\Objects\NccVersionInformation;
use ncc\Utilities\Functions; use ncc\Utilities\Functions;
use RuntimeException;
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
@ -50,7 +50,6 @@
* *
* @param boolean $reload Indicates if the cached version is to be ignored and the version file to be reloaded and validated * @param boolean $reload Indicates if the cached version is to be ignored and the version file to be reloaded and validated
* @return NccVersionInformation * @return NccVersionInformation
* @throws IOException
* @throws PathNotFoundException * @throws PathNotFoundException
*/ */
public static function getVersionInformation(bool $reload=False): NccVersionInformation public static function getVersionInformation(bool $reload=False): NccVersionInformation
@ -62,26 +61,26 @@
if(!file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'version.json')) if(!file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'version.json'))
{ {
throw new \RuntimeException('The file \'version.json\' was not found in \'' . __DIR__ . '\''); throw new RuntimeException('The file \'version.json\' was not found in \'' . __DIR__ . '\'');
} }
try try
{ {
self::$version_information = NccVersionInformation::fromArray(Functions::loadJsonFile(__DIR__ . DIRECTORY_SEPARATOR . 'version.json', Functions::FORCE_ARRAY)); self::$version_information = NccVersionInformation::fromArray(Functions::loadJsonFile(__DIR__ . DIRECTORY_SEPARATOR . 'version.json', Functions::FORCE_ARRAY));
} }
catch(MalformedJsonException $e) catch(IOException $e)
{ {
throw new \RuntimeException('Unable to parse JSON contents of \'version.json\' in \'' . __DIR__ . '\'', $e); throw new RuntimeException('Unable to parse JSON contents of \'version.json\' in \'' . __DIR__ . '\'', $e);
} }
if(self::$version_information->Version === null) if(self::$version_information->Version === null)
{ {
throw new \RuntimeException('The version number is not specified in the version information file'); throw new RuntimeException('The version number is not specified in the version information file');
} }
if(self::$version_information->Branch === null) if(self::$version_information->Branch === null)
{ {
throw new \RuntimeException('The version branch is not specified in the version information file'); throw new RuntimeException('The version branch is not specified in the version information file');
} }
return self::$version_information; return self::$version_information;
@ -136,7 +135,7 @@
if(!defined('NCC_INIT')) if(!defined('NCC_INIT'))
{ {
/** @noinspection ClassConstantCanBeUsedInspection */ /** @noinspection ClassConstantCanBeUsedInspection */
throw new \RuntimeException('NCC Must be initialized before executing ' . get_called_class() . '::getConstants()'); throw new RuntimeException('NCC Must be initialized before executing ' . get_called_class() . '::getConstants()');
} }
return [ return [