Added function validate() to \ncc\Objects\ProjectConfiguration > Project

Added function validate() to \ncc\Objects\ProjectConfiguration > Compiler
Updated ExceptionCodes.php
Added UnsupportedExtensionVersionException.php
Added UnsupportedCompilerExtensionException.php
Added InvalidVersionConfigurationException.php
Added InvalidPropertyValueException.php
This commit is contained in:
Netkas 2022-10-22 02:41:10 -04:00
parent 781ee06c67
commit 45ddb06831
7 changed files with 219 additions and 1 deletions

View file

@ -16,12 +16,15 @@
use ncc\Exceptions\InvalidProjectBuildConfiguration;
use ncc\Exceptions\InvalidProjectConfigurationException;
use ncc\Exceptions\InvalidProjectNameException;
use ncc\Exceptions\InvalidPropertyValueException;
use ncc\Exceptions\InvalidScopeException;
use ncc\Exceptions\InvalidVersionConfigurationException;
use ncc\Exceptions\InvalidVersionNumberException;
use ncc\Exceptions\MalformedJsonException;
use ncc\Exceptions\NoUnitsFoundException;
use ncc\Exceptions\ProjectAlreadyExistsException;
use ncc\Exceptions\RuntimeException;
use ncc\Exceptions\UnsupportedCompilerExtensionException;
use ncc\Exceptions\UnsupportedPackageException;
/**
@ -145,6 +148,26 @@
*/
const InvalidProjectBuildConfiguration = -1722;
/**
* @see UnsupportedCompilerExtensionException
*/
const UnsupportedCompilerExtensionException = -1723;
/**
* @see InvalidPropertyValueException
*/
const InvalidPropertyValueException = -1724;
/**
* @see InvalidVersionConfigurationException
*/
const InvalidVersionConfigurationException = -1725;
/**
* @see UnsupportedExtensionVersionException
*/
const UnsupportedExtensionVersionException = -1726;
/**
* All the exception codes from NCC
*/
@ -171,6 +194,10 @@
self::InvalidConstantNameException,
self::PackagePreparationFailedException,
self::BuildConfigurationNotFoundException,
self::InvalidProjectBuildConfiguration
self::InvalidProjectBuildConfiguration,
self::UnsupportedCompilerExtensionException,
self::InvalidPropertyValueException,
self::InvalidVersionConfigurationException,
self::UnsupportedExtensionVersionException
];
}

View file

@ -0,0 +1,11 @@
<?php
namespace ncc\Exceptions;
class InvalidPropertyValueException extends \Exception
{
public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
}
}

View file

@ -0,0 +1,28 @@
<?php
/** @noinspection PhpPropertyOnlyWrittenInspection */
namespace ncc\Exceptions;
use Exception;
use ncc\Abstracts\ExceptionCodes;
use Throwable;
class InvalidVersionConfigurationException extends Exception
{
/**
* @var Throwable|null
*/
private ?Throwable $previous;
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::InvalidVersionConfigurationException, $previous);
$this->message = $message;
$this->previous = $previous;
}
}

View file

@ -0,0 +1,28 @@
<?php
/** @noinspection PhpPropertyOnlyWrittenInspection */
namespace ncc\Exceptions;
use Exception;
use ncc\Abstracts\ExceptionCodes;
use Throwable;
class UnsupportedCompilerExtensionException extends Exception
{
/**
* @var Throwable|null
*/
private ?Throwable $previous;
/**
* @param string $message
* @param Throwable|null $previous
*/
public function __construct(string $message = "", ?Throwable $previous = null)
{
parent::__construct($message, ExceptionCodes::UnsupportedCompilerExtensionException, $previous);
$this->message = $message;
$this->previous = $previous;
}
}

View file

@ -0,0 +1,13 @@
<?php
namespace ncc\Exceptions;
use Exception;
class UnsupportedExtensionVersionException extends Exception
{
public function __construct(string $message = "", int $code = 0, ?Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
}
}

View file

@ -4,6 +4,15 @@
namespace ncc\Objects\ProjectConfiguration;
use Exception;
use ncc\Abstracts\CompilerExtensions;
use ncc\Abstracts\CompilerExtensionSupportedVersions;
use ncc\Exceptions\InvalidPropertyValueException;
use ncc\Exceptions\InvalidVersionConfigurationException;
use ncc\Exceptions\RuntimeException;
use ncc\Exceptions\UnsupportedCompilerExtensionException;
use ncc\Exceptions\UnsupportedExtensionVersionException;
use ncc\ThirdParty\jelix\Version\VersionComparator;
use ncc\Utilities\Functions;
/**
@ -33,6 +42,86 @@
*/
public $MaximumVersion;
/**
* Validates the compiler object
*
* @param bool $throw_exception
* @return bool
* @throws InvalidPropertyValueException
* @throws RuntimeException
* @throws UnsupportedCompilerExtensionException
* @throws UnsupportedExtensionVersionException
*/
public function validate(bool $throw_exception=True): bool
{
if($this->Extension == null)
{
if($throw_exception)
throw new InvalidPropertyValueException('The property \'extension\' must not be null.');
return False;
}
if($this->MinimumVersion == null)
{
if($throw_exception)
throw new InvalidPropertyValueException('The property \'minimum_version\' must not be null.');
return False;
}
if($this->MaximumVersion == null)
{
if($throw_exception)
throw new InvalidPropertyValueException('The property \'maximum_version\' must not be null.');
return False;
}
try
{
if(VersionComparator::compareVersion($this->MinimumVersion, $this->MaximumVersion) == 1)
{
if($throw_exception)
throw new InvalidVersionConfigurationException('The minimum version cannot be greater version number than the maximum version');
return False;
}
}
catch (Exception $e)
{
throw new RuntimeException('Version comparison failed: ' . $e->getMessage());
}
if(!in_array($this->Extension, CompilerExtensions::All))
{
if($throw_exception)
throw new UnsupportedCompilerExtensionException('The compiler extension \'' . $this->Extension . '\' is not supported');
return False;
}
switch($this->Extension)
{
case CompilerExtensions::PHP:
if(!in_array($this->MaximumVersion, CompilerExtensionSupportedVersions::PHP))
{
if($throw_exception)
throw new UnsupportedExtensionVersionException('The MaximumVersion does not support version ' . $this->MaximumVersion . ' for the extension ' . $this->Extension);
return False;
}
if(!in_array($this->MinimumVersion, CompilerExtensionSupportedVersions::PHP))
{
if($throw_exception)
throw new UnsupportedExtensionVersionException('The MinimumVersion does not support version ' . $this->MinimumVersion . ' for the extension ' . $this->Extension);
return False;
}
break;
default:
throw new UnsupportedCompilerExtensionException('The compiler extension \'' . $this->Extension . '\' is not supported');
}
return True;
}
/**
* Returns an array representation of the object
*

View file

@ -4,6 +4,10 @@
namespace ncc\Objects\ProjectConfiguration;
use ncc\Exceptions\InvalidPropertyValueException;
use ncc\Exceptions\RuntimeException;
use ncc\Exceptions\UnsupportedCompilerExtensionException;
use ncc\Exceptions\UnsupportedExtensionVersionException;
use ncc\Utilities\Functions;
/**
@ -31,6 +35,24 @@
$this->Options = [];
}
/**
* Validates the Project object
*
* @param bool $throw_exception
* @return bool
* @throws InvalidPropertyValueException
* @throws RuntimeException
* @throws UnsupportedCompilerExtensionException
* @throws UnsupportedExtensionVersionException
*/
public function validate(bool $throw_exception=True): bool
{
if(!$this->Compiler->validate($throw_exception))
return False;
return True;
}
/**
* Returns an array representation of the object
*