Removed ExecutionPointer.php & Implemented ValidatableObjectInterface into BuildConfiguration.php
This commit is contained in:
parent
f62856b530
commit
9aba1cbf38
2 changed files with 31 additions and 137 deletions
|
@ -1,131 +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.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @noinspection PhpMissingFieldTypeInspection */
|
||||
|
||||
namespace ncc\Objects\ExecutionPointers;
|
||||
|
||||
use ncc\Interfaces\BytecodeObjectInterface;
|
||||
use ncc\Objects\Package\ExecutionUnit;
|
||||
use ncc\Objects\ProjectConfiguration\ExecutionPolicy;
|
||||
use ncc\Utilities\Functions;
|
||||
|
||||
class ExecutionPointer implements BytecodeObjectInterface
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* The execution policy for this execution unit
|
||||
*
|
||||
* @var ExecutionPolicy
|
||||
*/
|
||||
private $execution_policy;
|
||||
|
||||
/**
|
||||
* The file pointer for where the target script should be executed
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $file_pointer;
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId(): string
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ExecutionPolicy
|
||||
*/
|
||||
public function getExecutionPolicy(): ExecutionPolicy
|
||||
{
|
||||
return $this->execution_policy;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getFilePointer(): ?string
|
||||
{
|
||||
return $this->file_pointer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Public Constructor with optional ExecutionUnit parameter to construct object from
|
||||
*
|
||||
* @param ExecutionUnit|null $unit
|
||||
* @param string|null $bin_file
|
||||
*/
|
||||
public function __construct(?ExecutionUnit $unit=null, ?string $bin_file=null)
|
||||
{
|
||||
if($unit === null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$this->id = $unit->getId();
|
||||
$this->execution_policy = $unit->getExecutionPolicy();
|
||||
$this->file_pointer = $bin_file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array representation of the object
|
||||
*
|
||||
* @param bool $bytecode
|
||||
* @return array
|
||||
*/
|
||||
public function toArray(bool $bytecode=false): array
|
||||
{
|
||||
return [
|
||||
($bytecode ? Functions::cbc('id') : 'id') => $this->id,
|
||||
($bytecode ? Functions::cbc('execution_policy') : 'execution_policy') => $this->execution_policy->toArray($bytecode),
|
||||
($bytecode ? Functions::cbc('file_pointer') : 'file_pointer') => $this->file_pointer,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs an object from an array representation
|
||||
*
|
||||
* @param array $data
|
||||
* @return ExecutionPointer
|
||||
*/
|
||||
public static function fromArray(array $data): ExecutionPointer
|
||||
{
|
||||
$object = new self();
|
||||
|
||||
$object->id = Functions::array_bc($data, 'id');
|
||||
$object->execution_policy = Functions::array_bc($data, 'execution_policy');
|
||||
$object->file_pointer = Functions::array_bc($data, 'file_pointer');
|
||||
|
||||
if($object->execution_policy !== null)
|
||||
{
|
||||
$object->execution_policy = ExecutionPolicy::fromArray($object->execution_policy);
|
||||
}
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
|
@ -26,7 +26,9 @@
|
|||
|
||||
use ncc\Enums\Types\BuildOutputType;
|
||||
use ncc\Exceptions\ConfigurationException;
|
||||
use ncc\Exceptions\NotSupportedException;
|
||||
use ncc\Interfaces\BytecodeObjectInterface;
|
||||
use ncc\Interfaces\ValidatableObjectInterface;
|
||||
use ncc\Objects\ProjectConfiguration\Dependency;
|
||||
use ncc\Utilities\Functions;
|
||||
use ncc\Utilities\Validate;
|
||||
|
@ -35,7 +37,7 @@
|
|||
* @author Zi Xing Narrakas
|
||||
* @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
|
||||
*/
|
||||
class BuildConfiguration implements BytecodeObjectInterface
|
||||
class BuildConfiguration implements BytecodeObjectInterface, ValidatableObjectInterface
|
||||
{
|
||||
/**
|
||||
* The unique name of the build configuration
|
||||
|
@ -63,6 +65,13 @@
|
|||
*/
|
||||
private $output_path;
|
||||
|
||||
/**
|
||||
* Optional. The name of the output file, eg; %ASSEMBLY.PACKAGE%.ncc
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
private $output_name;
|
||||
|
||||
/**
|
||||
* An array of constants to define for the build when importing or executing.
|
||||
*
|
||||
|
@ -118,11 +127,11 @@
|
|||
/**
|
||||
* Validates the BuildConfiguration object
|
||||
*
|
||||
* @param bool $throw_exception
|
||||
* @return bool
|
||||
* @return void
|
||||
* @throws ConfigurationException
|
||||
* @throws NotSupportedException
|
||||
*/
|
||||
public function validate(): bool
|
||||
public function validate(): void
|
||||
{
|
||||
if(!Validate::nameFriendly($this->name))
|
||||
{
|
||||
|
@ -164,8 +173,6 @@
|
|||
{
|
||||
$dependency->validate();
|
||||
}
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -244,6 +251,22 @@
|
|||
$this->output_path = $output_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getOutputName(): ?string
|
||||
{
|
||||
return $this->output_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $output_name
|
||||
*/
|
||||
public function setOutputName(?string $output_name): void
|
||||
{
|
||||
$this->output_name = $output_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|string[]
|
||||
*/
|
||||
|
@ -407,6 +430,7 @@
|
|||
$results[($bytecode ? Functions::cbc('name') : 'name')] = $this->name;
|
||||
$results[($bytecode ? Functions::cbc('build_type') : 'build_type')] = $this->build_type;
|
||||
$results[($bytecode ? Functions::cbc('output_path') : 'output_path')] = $this->output_path;
|
||||
$results[($bytecode ? Functions::cbc('output_name') : 'output_path')] = $this->output_name;
|
||||
|
||||
if(count($this->options) > 0)
|
||||
{
|
||||
|
@ -462,6 +486,7 @@
|
|||
|
||||
$object = new BuildConfiguration($name, $output_path);
|
||||
|
||||
$object->output_name = Functions::array_bc($data, 'output_name');
|
||||
$object->build_type = Functions::array_bc($data, 'build_type') ?? BuildOutputType::NCC_PACKAGE;
|
||||
$object->options = Functions::array_bc($data, 'options') ?? [];
|
||||
$object->define_constants = Functions::array_bc($data, 'define_constants') ?? [];
|
||||
|
|
Loading…
Add table
Reference in a new issue