- Corrected code-smell and code style issues in \ncc\Objects > HttpResponseCache

- Corrected code-smell and code style issues in `\ncc\Objects > InstallationPaths`
 - Updated class `\ncc\Objects > NccVersionInformation` to use method calls rather than direct property access and implemented
   `SerializableObjectInterface`
 - Updated class `\ncc\Objects > Package` to use method calls rather than direct property access and implemented
   `SerializableObjectInterface`
 - Updated class `\ncc\Objects > PackageLock` to use method calls rather than direct property access and implemented
   `BytecodeObjectInterface`
 - Updated class `\ncc\Objects > ProjectConfiguration` to use method calls rather than direct property access
 - Updated class `\ncc\Objects > ProjectDetectionResults` to use method calls rather than direct property access
 - Updated class `\ncc\Objects > RemotePackageInput` to use method calls rather than direct property access
 - Updated class `\ncc\Objects > RepositoryQueryResults` to use method calls rather than direct property access
 - Updated class `\ncc\Objects > Vault` to use method calls rather than direct property access
 - Removed unused `\ncc\Objects > NccUpdateInformation`
 - Removed unused `\ncc\Objects > PhpConfiguration`
This commit is contained in:
Netkas 2023-08-30 19:58:31 -04:00
parent 42c26c92a0
commit 05c890f0d1
No known key found for this signature in database
GPG key ID: 5DAF58535614062B
38 changed files with 1247 additions and 964 deletions

View file

@ -186,6 +186,20 @@ features and reduced the number of exceptions down to 15 exceptions.
`SerializableObjectInterface` `SerializableObjectInterface`
- Updated class `\ncc\Objects > HttpResponse` to use method calls rather than direct property access and implemented - Updated class `\ncc\Objects > HttpResponse` to use method calls rather than direct property access and implemented
`SerializableObjectInterface` `SerializableObjectInterface`
- Corrected code-smell and code style issues in `\ncc\Objects > HttpResponseCache`
- Corrected code-smell and code style issues in `\ncc\Objects > InstallationPaths`
- Updated class `\ncc\Objects > NccVersionInformation` to use method calls rather than direct property access and implemented
`SerializableObjectInterface`
- Updated class `\ncc\Objects > Package` to use method calls rather than direct property access and implemented
`SerializableObjectInterface`
- Updated class `\ncc\Objects > PackageLock` to use method calls rather than direct property access and implemented
`BytecodeObjectInterface`
- Updated class `\ncc\Objects > ProjectConfiguration` to use method calls rather than direct property access
- Updated class `\ncc\Objects > ProjectDetectionResults` to use method calls rather than direct property access
- Updated class `\ncc\Objects > RemotePackageInput` to use method calls rather than direct property access
- Updated class `\ncc\Objects > RepositoryQueryResults` to use method calls rather than direct property access
- Updated class `\ncc\Objects > Vault` to use method calls rather than direct property access
### Removed ### Removed
- Removed `FileNotFoundException` and `DirectoryNotFoundException` from `\ncc\Exceptions` - Removed `FileNotFoundException` and `DirectoryNotFoundException` from `\ncc\Exceptions`
@ -245,6 +259,8 @@ features and reduced the number of exceptions down to 15 exceptions.
- Removed unused exception `InstallationException` 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. - Removed all unused exceptions from the project, reduced the number of exceptions in total.
- Removed unused `scope` property from `\ncc\Objects\ProjectConfiguration > Build` - Removed unused `scope` property from `\ncc\Objects\ProjectConfiguration > Build`
- Removed unused `\ncc\Objects > NccUpdateInformation`
- Removed unused `\ncc\Objects > PhpConfiguration`

View file

@ -289,7 +289,7 @@
Console::out('NCC Version: ' . NCC_VERSION_NUMBER . ' (' . NCC_VERSION_BRANCH . ')'); Console::out('NCC Version: ' . NCC_VERSION_NUMBER . ' (' . NCC_VERSION_BRANCH . ')');
Console::out('Build Flags: ' . implode(',', NCC_VERSION_FLAGS)); Console::out('Build Flags: ' . implode(',', NCC_VERSION_FLAGS));
foreach($VersionInformation->Components as $component) foreach($VersionInformation->getComponents() as $component)
{ {
$full_name = $component->getVendor() . '/' . $component->getPackageName(); $full_name = $component->getVendor() . '/' . $component->getPackageName();

View file

@ -177,10 +177,10 @@
try try
{ {
Console::out('magic_bytes: ' . json_encode(($package->magic_bytes?->toArray() ?? []), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); Console::out('magic_bytes: ' . json_encode(($package->getMagicBytes()?->toArray() ?? []), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
Console::out('header: ' . json_encode(($package->header?->toArray() ?? []), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); Console::out('header: ' . json_encode(($package->getHeader()?->toArray() ?? []), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
Console::out('assembly: ' . json_encode(($package->assembly?->toArray() ?? []), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); Console::out('assembly: ' . json_encode(($package->getAssembly()?->toArray() ?? []), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
Console::out('installer: ' . json_encode(($package->installer?->toArray() ?? []), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); Console::out('installer: ' . json_encode(($package->getInstaller()?->toArray() ?? []), JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
} }
catch(JsonException $e) catch(JsonException $e)
{ {
@ -188,12 +188,12 @@
return; return;
} }
Console::out('main: ' . ($package->main_execution_policy ?? 'N/A')); Console::out('main: ' . ($package->getMainExecutionPolicy() ?? 'N/A'));
if($package->dependencies !== null && count($package->dependencies) > 0) if(count($package->getDependencies()) > 0)
{ {
Console::out('dependencies:'); Console::out('dependencies:');
foreach($package->dependencies as $dependency) foreach($package->getDependencies() as $dependency)
{ {
try try
{ {
@ -211,10 +211,10 @@
Console::out('dependencies: N/A'); Console::out('dependencies: N/A');
} }
if($package->execution_units !== null && count($package->execution_units) > 0) if(count($package->getExecutionUnits()) > 0)
{ {
Console::out('execution_units:'); Console::out('execution_units:');
foreach($package->execution_units as $unit) foreach($package->getExecutionUnits() as $unit)
{ {
try try
{ {
@ -232,10 +232,10 @@
Console::out('execution_units: N/A'); Console::out('execution_units: N/A');
} }
if($package->resources !== null && count($package->resources) > 0) if(count($package->getResources()) > 0)
{ {
Console::out('resources:'); Console::out('resources:');
foreach($package->resources as $resource) foreach($package->getResources() as $resource)
{ {
Console::out(' - ' . sprintf('%s - (%s)', $resource->getName(), Functions::b2u(strlen($resource->getData())))); Console::out(' - ' . sprintf('%s - (%s)', $resource->getName(), Functions::b2u(strlen($resource->getData()))));
} }
@ -245,10 +245,10 @@
Console::out('resources: N/A'); Console::out('resources: N/A');
} }
if($package->components !== null && count($package->components) > 0) if(count($package->getComponents()) > 0)
{ {
Console::out('components:'); Console::out('components:');
foreach($package->components as $component) foreach($package->getComponents() as $component)
{ {
try try
{ {
@ -402,7 +402,7 @@
try try
{ {
$parsed_source = new RemotePackageInput($package); $parsed_source = new RemotePackageInput($package);
if($parsed_source->vendor !== null && $parsed_source->package !== null && $parsed_source->source !== null) if($parsed_source->getVendor() !== null && $parsed_source->getPackage() !== null && $parsed_source->getSource() !== null)
{ {
$package_path = realpath($package_manager->fetchFromSource($parsed_source->toString(), $credential)); $package_path = realpath($package_manager->fetchFromSource($parsed_source->toString(), $credential));
} }
@ -458,56 +458,56 @@
Console::out('Package installation details' . PHP_EOL); Console::out('Package installation details' . PHP_EOL);
if(!is_null($package->assembly->getUuid())) if(!is_null($package->getAssembly()->getUuid()))
{ {
Console::out(' UUID: ' . Console::formatColor($package->assembly->getUuid(), ConsoleColors::LIGHT_GREEN)); Console::out(' UUID: ' . Console::formatColor($package->getAssembly()->getUuid(), ConsoleColors::LIGHT_GREEN));
} }
if(!is_null($package->assembly->getPackage())) if(!is_null($package->getAssembly()->getPackage()))
{ {
Console::out(' Package: ' . Console::formatColor($package->assembly->getPackage(), ConsoleColors::LIGHT_GREEN)); Console::out(' Package: ' . Console::formatColor($package->getAssembly()->getPackage(), ConsoleColors::LIGHT_GREEN));
} }
if(!is_null($package->assembly->getName())) if(!is_null($package->getAssembly()->getName()))
{ {
Console::out(' Name: ' . Console::formatColor($package->assembly->getName(), ConsoleColors::LIGHT_GREEN)); Console::out(' Name: ' . Console::formatColor($package->getAssembly()->getName(), ConsoleColors::LIGHT_GREEN));
} }
if(!is_null($package->assembly->getVersion())) if(!is_null($package->getAssembly()->getVersion()))
{ {
Console::out(' Version: ' . Console::formatColor($package->assembly->getVersion(), ConsoleColors::LIGHT_GREEN)); Console::out(' Version: ' . Console::formatColor($package->getAssembly()->getVersion(), ConsoleColors::LIGHT_GREEN));
} }
if(!is_null($package->assembly->getDescription())) if(!is_null($package->getAssembly()->getDescription()))
{ {
Console::out(' Description: ' . Console::formatColor($package->assembly->getDescription(), ConsoleColors::LIGHT_GREEN)); Console::out(' Description: ' . Console::formatColor($package->getAssembly()->getDescription(), ConsoleColors::LIGHT_GREEN));
} }
if(!is_null($package->assembly->getProduct())) if(!is_null($package->getAssembly()->getProduct()))
{ {
Console::out(' Product: ' . Console::formatColor($package->assembly->getProduct(), ConsoleColors::LIGHT_GREEN)); Console::out(' Product: ' . Console::formatColor($package->getAssembly()->getProduct(), ConsoleColors::LIGHT_GREEN));
} }
if(!is_null($package->assembly->getCompany())) if(!is_null($package->getAssembly()->getCompany()))
{ {
Console::out(' Company: ' . Console::formatColor($package->assembly->getCompany(), ConsoleColors::LIGHT_GREEN)); Console::out(' Company: ' . Console::formatColor($package->getAssembly()->getCompany(), ConsoleColors::LIGHT_GREEN));
} }
if(!is_null($package->assembly->getCopyright())) if(!is_null($package->getAssembly()->getCopyright()))
{ {
Console::out(' Copyright: ' . Console::formatColor($package->assembly->getCopyright(), ConsoleColors::LIGHT_GREEN)); Console::out(' Copyright: ' . Console::formatColor($package->getAssembly()->getCopyright(), ConsoleColors::LIGHT_GREEN));
} }
if(!is_null($package->assembly->getTrademark())) if(!is_null($package->getAssembly()->getTrademark()))
{ {
Console::out(' Trademark: ' . Console::formatColor($package->assembly->getTrademark(), ConsoleColors::LIGHT_GREEN)); Console::out(' Trademark: ' . Console::formatColor($package->getAssembly()->getTrademark(), ConsoleColors::LIGHT_GREEN));
} }
Console::out((string)null); Console::out((string)null);
if(count($package->dependencies) > 0) if(count($package->getDependencies()) > 0)
{ {
$dependencies = []; $dependencies = [];
foreach($package->dependencies as $dependency) foreach($package->getDependencies() as $dependency)
{ {
$require_dependency = false; $require_dependency = false;
@ -559,28 +559,20 @@
} }
Console::out(sprintf('Extension: %s', Console::out(sprintf('Extension: %s',
Console::formatColor($package->header->getCompilerExtension()->getExtension(), ConsoleColors::GREEN) Console::formatColor($package->getHeader()->getCompilerExtension()->getExtension(), ConsoleColors::GREEN)
)); ));
if($package->header->getCompilerExtension()->getMinimumVersion() !== null) Console::out(sprintf('Maximum Version: %s',
{ Console::formatColor($package->getHeader()->getCompilerExtension()->getMinimumVersion(), ConsoleColors::LIGHT_MAGENTA)
Console::out(sprintf('Maximum Version: %s', ));
Console::formatColor($package->header->getCompilerExtension()->getMinimumVersion(), ConsoleColors::LIGHT_MAGENTA)
));
}
if($package->header->getCompilerExtension()->getMinimumVersion() !== null)
{
Console::out(sprintf('Minimum Version: %s',
Console::formatColor($package->header->getCompilerExtension()->getMinimumVersion(), ConsoleColors::LIGHT_MAGENTA)
));
}
Console::out(sprintf('Minimum Version: %s',
Console::formatColor($package->getHeader()->getCompilerExtension()->getMinimumVersion(), ConsoleColors::LIGHT_MAGENTA)
));
if(!$user_confirmation) if(!$user_confirmation)
{ {
$user_confirmation = Console::getBooleanInput(sprintf('Do you want to install %s', $package->assembly->getPackage())); $user_confirmation = Console::getBooleanInput(sprintf('Do you want to install %s', $package->getAssembly()->getPackage()));
} }
if($user_confirmation) if($user_confirmation)
@ -588,7 +580,7 @@
try try
{ {
$package_manager->install($package_path, $credential, $installer_options); $package_manager->install($package_path, $credential, $installer_options);
Console::out(sprintf('Package %s installed successfully', $package->assembly->getPackage())); Console::out(sprintf('Package %s installed successfully', $package->getAssembly()->getPackage()));
} }
catch(Exception $e) catch(Exception $e)
{ {

View file

@ -85,7 +85,7 @@
*/ */
public static function fetch(RemotePackageInput $packageInput): string public static function fetch(RemotePackageInput $packageInput): string
{ {
$package_path = self::require($packageInput->vendor, $packageInput->package, $packageInput->version); $package_path = self::require($packageInput->getVendor(), $packageInput->getPackage(), $packageInput->getVersion());
$packages = self::compilePackages($package_path . DIRECTORY_SEPARATOR . 'composer.lock'); $packages = self::compilePackages($package_path . DIRECTORY_SEPARATOR . 'composer.lock');
$real_package_name = explode('=', $packageInput->toStandard(false))[0]; $real_package_name = explode('=', $packageInput->toStandard(false))[0];
@ -232,10 +232,10 @@
$built_package = $project_manager->build(); $built_package = $project_manager->build();
// Copy the project to the build directory // Copy the project to the build directory
$out_path = $base_dir . DIRECTORY_SEPARATOR . 'build' . DIRECTORY_SEPARATOR . sprintf('%s.ncc', $project_configuration->assembly->getPackage()); $out_path = $base_dir . DIRECTORY_SEPARATOR . 'build' . DIRECTORY_SEPARATOR . sprintf('%s.ncc', $project_configuration->getAssembly()->getPackage());
$filesystem->copy($built_package, $out_path); $filesystem->copy($built_package, $out_path);
$filesystem->remove($built_package); $filesystem->remove($built_package);
$built_packages[$project_configuration->assembly->getPackage()] = $out_path; $built_packages[$project_configuration->getAssembly()->getPackage()] = $out_path;
} }
return $built_packages; return $built_packages;
@ -310,27 +310,27 @@
{ {
// Generate a new project configuration object // Generate a new project configuration object
$project_configuration = new ProjectConfiguration(); $project_configuration = new ProjectConfiguration();
$project_configuration->assembly->setName($composer_package->getName()); $project_configuration->getAssembly()->setName($composer_package->getName());
$project_configuration->assembly->setDescription($composer_package->getDescription()); $project_configuration->getAssembly()->setDescription($composer_package->getDescription());
if(isset($version_map[$composer_package->getName()])) if(isset($version_map[$composer_package->getName()]))
{ {
$project_configuration->assembly->setVersion(self::versionMap($composer_package->getName(), $version_map)); $project_configuration->getAssembly()->setVersion(self::versionMap($composer_package->getName(), $version_map));
} }
if($project_configuration->assembly->getVersion() === null || $project_configuration->assembly->getVersion() === '') if($project_configuration->getAssembly()->getVersion() === '')
{ {
$project_configuration->assembly->setVersion('1.0.0'); $project_configuration->getAssembly()->setVersion('1.0.0');
} }
$project_configuration->assembly->setUuid(Uuid::v1()->toRfc4122()); $project_configuration->getAssembly()->setUuid(Uuid::v1()->toRfc4122());
$project_configuration->assembly->setPackage(self::toPackageName($composer_package->getName())); $project_configuration->getAssembly()->setPackage(self::toPackageName($composer_package->getName()));
// Add the update source // Add the update source
$project_configuration->project->setUpdateSource(new ProjectConfiguration\UpdateSource()); $project_configuration->getProject()->setUpdateSource(new ProjectConfiguration\UpdateSource());
$project_configuration->project->getUpdateSource()?->setSource(sprintf('%s@composer', str_ireplace('\\', '/', $composer_package->getName()))); $project_configuration->getProject()->getUpdateSource()?->setSource(sprintf('%s@composer', str_ireplace('\\', '/', $composer_package->getName())));
$project_configuration->project->getUpdateSource()?->setRepository(null); $project_configuration->getProject()->getUpdateSource()?->setRepository(null);
// Process the dependencies // Process the dependencies
if($composer_package->getRequire() !== null && count($composer_package->getRequire()) > 0) if($composer_package->getRequire() !== null && count($composer_package->getRequire()) > 0)
@ -350,7 +350,7 @@
$dependency->setSourceType(DependencySourceType::LOCAL); $dependency->setSourceType(DependencySourceType::LOCAL);
$dependency->setVersion(self::versionMap($item->getPackageName(), $version_map)); $dependency->setVersion(self::versionMap($item->getPackageName(), $version_map));
$dependency->setSource($package_name . '.ncc'); $dependency->setSource($package_name . '.ncc');
$project_configuration->build->addDependency($dependency); $project_configuration->getBuild()->addDependency($dependency);
} }
} }
@ -360,14 +360,14 @@
$build_configuration->setOutputPath('build'); $build_configuration->setOutputPath('build');
// Apply the final properties // Apply the final properties
$project_configuration->build->addBuildConfiguration($build_configuration); $project_configuration->getBuild()->addBuildConfiguration($build_configuration);
$project_configuration->build->setDefaultConfiguration('default'); $project_configuration->getBuild()->setDefaultConfiguration('default');
$project_configuration->build->setSourcePath('.src'); $project_configuration->getBuild()->setSourcePath('.src');
// Apply a compiler extension // Apply a compiler extension
$project_configuration->project->getCompiler()->setExtension(CompilerExtensions::PHP); $project_configuration->getProject()->getCompiler()->setExtension(CompilerExtensions::PHP);
$project_configuration->project->getCompiler()->setMaximumVersion(CompilerExtensionSupportedVersions::PHP[0]); $project_configuration->getProject()->getCompiler()->setMaximumVersion(CompilerExtensionSupportedVersions::PHP[0]);
$project_configuration->project->getCompiler()->setMinimumVersion(CompilerExtensionSupportedVersions::PHP[(count(CompilerExtensionSupportedVersions::PHP) - 1)]); $project_configuration->getProject()->getCompiler()->setMinimumVersion(CompilerExtensionSupportedVersions::PHP[(count(CompilerExtensionSupportedVersions::PHP) - 1)]);
return $project_configuration; return $project_configuration;
} }
@ -750,7 +750,7 @@
if (count($static_files) > 0) if (count($static_files) > 0)
{ {
$project_configuration->project->addOption('static_files', $static_files); $project_configuration->getProject()->addOption('static_files', $static_files);
foreach ($static_files as $file) foreach ($static_files as $file)
{ {

View file

@ -56,18 +56,17 @@
{ {
$httpRequest = new HttpRequest(); $httpRequest = new HttpRequest();
$protocol = ($definedRemoteSource->isSsl() ? "https" : "http"); $protocol = ($definedRemoteSource->isSsl() ? "https" : "http");
$owner_f = str_ireplace("/", "%2F", $packageInput->vendor); $owner_f = str_ireplace(array("/", "."), "%2F", $packageInput->getVendor());
$owner_f = str_ireplace(".", "%2F", $owner_f); $repository = urlencode($packageInput->getPackage());
$repository = urlencode($packageInput->package);
$httpRequest->setUrl($protocol . '://' . $definedRemoteSource->getHost() . "/repos/$owner_f/$repository"); $httpRequest->setUrl($protocol . '://' . $definedRemoteSource->getHost() . "/repos/$owner_f/$repository");
$response_decoded = self::getJsonResponse($httpRequest, $entry); $response_decoded = self::getJsonResponse($httpRequest, $entry);
$query = new RepositoryQueryResults(); $query = new RepositoryQueryResults();
$query->Files->GitSshUrl = ($response_decoded['ssh_url'] ?? null); $query->getFiles()->GitSshUrl = ($response_decoded['ssh_url'] ?? null);
$query->Files->GitHttpUrl = ($response_decoded['clone_url'] ?? null); $query->getFiles()->GitHttpUrl = ($response_decoded['clone_url'] ?? null);
$query->Version = Functions::convertToSemVer($response_decoded['default_branch'] ?? null); $query->setVersion(Functions::convertToSemVer($response_decoded['default_branch'] ?? null));
$query->ReleaseDescription = ($response_decoded['description'] ?? null); $query->setReleaseDescription($response_decoded['description'] ?? null);
$query->ReleaseName = ($response_decoded['name'] ?? null); $query->setReleaseName($response_decoded['name'] ?? null);
return $query; return $query;
} }
@ -120,9 +119,8 @@
{ {
$httpRequest = new HttpRequest(); $httpRequest = new HttpRequest();
$protocol = ($definedRemoteSource->isSsl() ? "https" : "http"); $protocol = ($definedRemoteSource->isSsl() ? "https" : "http");
$owner_f = str_ireplace("/", "%2F", $packageInput->vendor); $owner_f = str_ireplace(array("/", "."), "%2F", $packageInput->getVersion());
$owner_f = str_ireplace(".", "%2F", $owner_f); $repository = urlencode($packageInput->getPackage());
$repository = urlencode($packageInput->package);
$httpRequest->setUrl($protocol . '://' . $definedRemoteSource->getHost() . "/repos/$owner_f/$repository/releases"); $httpRequest->setUrl($protocol . '://' . $definedRemoteSource->getHost() . "/repos/$owner_f/$repository/releases");
$response_decoded = self::getJsonResponse($httpRequest, $entry); $response_decoded = self::getJsonResponse($httpRequest, $entry);
@ -135,11 +133,11 @@
foreach($response_decoded as $release) foreach($response_decoded as $release)
{ {
$query_results = new RepositoryQueryResults(); $query_results = new RepositoryQueryResults();
$query_results->Version = Functions::convertToSemVer($release['tag_name']); $query_results->setVersion(Functions::convertToSemVer($release['tag_name']));
$query_results->ReleaseName = $release['name']; $query_results->setReleaseName($release['name']);
$query_results->ReleaseDescription = $release['body']; $query_results->getReleaseDescription($release['body']);
$query_results->Files->ZipballUrl = ($release['zipball_url'] ?? null); $query_results->getFiles()->ZipballUrl = ($release['zipball_url'] ?? null);
$query_results->Files->TarballUrl = ($release['tarball_url'] ?? null); $query_results->getFiles()->TarballUrl = ($release['tarball_url'] ?? null);
if(isset($release['assets'])) if(isset($release['assets']))
{ {
@ -148,12 +146,12 @@
$parsed_asset = self::parseAsset($asset); $parsed_asset = self::parseAsset($asset);
if($parsed_asset !== null) if($parsed_asset !== null)
{ {
$query_results->Files->PackageUrl = $parsed_asset; $query_results->getFiles()->PackageUrl = $parsed_asset;
} }
} }
} }
$return[$query_results->Version] = $query_results; $return[$query_results->getVersion()] = $query_results;
} }
return $return; return $return;
@ -221,10 +219,10 @@
if (count($releases) === 0) if (count($releases) === 0)
{ {
throw new GitException(sprintf('No releases found for %s/%s on %s.', $packageInput->vendor, $packageInput->package, $definedRemoteSource->getHost())); throw new GitException(sprintf('No releases found for %s/%s on %s.', $packageInput->getVendor(), $packageInput->getPackage(), $definedRemoteSource->getHost()));
} }
if ($packageInput->version === Versions::LATEST) if ($packageInput->getVersion() === Versions::LATEST)
{ {
$latest_version = null; $latest_version = null;
foreach ($releases as $release) foreach ($releases as $release)
@ -245,7 +243,7 @@
} }
// Query a specific version // Query a specific version
if (!isset($releases[$packageInput->version])) if (!isset($releases[$packageInput->getVersion()]))
{ {
// Find the closest thing to the requested version // Find the closest thing to the requested version
$selected_version = null; $selected_version = null;
@ -257,7 +255,7 @@
continue; continue;
} }
if (VersionComparator::compareVersion($version, $packageInput->version) === 1) if (VersionComparator::compareVersion($version, $packageInput->getVersion()) === 1)
{ {
$selected_version = $version; $selected_version = $version;
} }
@ -265,17 +263,17 @@
if ($selected_version === null) if ($selected_version === null)
{ {
throw new GitException(sprintf('Version %s not found for %s/%s on %s.', $packageInput->version, $packageInput->vendor, $packageInput->package, $definedRemoteSource->getHost())); throw new GitException(sprintf('Version %s not found for %s/%s on %s.', $packageInput->getVersion(), $packageInput->getVendor(), $packageInput->getPackage(), $definedRemoteSource->getHost()));
} }
} }
else else
{ {
$selected_version = $packageInput->version; $selected_version = $packageInput->getVersion();
} }
if (!isset($releases[$selected_version])) if (!isset($releases[$selected_version]))
{ {
throw new GitException(sprintf('Version %s not found for %s/%s on %s.', $packageInput->version, $packageInput->vendor, $packageInput->package, $definedRemoteSource->getHost())); throw new GitException(sprintf('Version %s not found for %s/%s on %s.', $packageInput->getVersion(), $packageInput->getVendor(), $packageInput->getPackage(), $definedRemoteSource->getHost()));
} }
return $releases[$selected_version]; return $releases[$selected_version];

View file

@ -57,10 +57,8 @@
{ {
$httpRequest = new HttpRequest(); $httpRequest = new HttpRequest();
$protocol = ($definedRemoteSource->isSsl() ? "https" : "http"); $protocol = ($definedRemoteSource->isSsl() ? "https" : "http");
$owner_f = str_ireplace("/", "%2F", $packageInput->vendor); $owner_f = str_ireplace(array("/", "."), "%2F", $packageInput->getVendor());
$owner_f = str_ireplace(".", "%2F", $owner_f); $project_f = str_ireplace(array("/", "."), "%2F", $packageInput->getPackage());
$project_f = str_ireplace("/", "%2F", $packageInput->package);
$project_f = str_ireplace(".", "%2F", $project_f);
$httpRequest->setUrl($protocol . '://' . $definedRemoteSource->getHost() . "/api/v4/projects/$owner_f%2F$project_f"); $httpRequest->setUrl($protocol . '://' . $definedRemoteSource->getHost() . "/api/v4/projects/$owner_f%2F$project_f");
$httpRequest = Functions::prepareGitServiceRequest($httpRequest, $entry); $httpRequest = Functions::prepareGitServiceRequest($httpRequest, $entry);
@ -74,11 +72,11 @@
$response_decoded = Functions::loadJson($response->getBody(), Functions::FORCE_ARRAY); $response_decoded = Functions::loadJson($response->getBody(), Functions::FORCE_ARRAY);
$query = new RepositoryQueryResults(); $query = new RepositoryQueryResults();
$query->Files->GitSshUrl = ($response_decoded['ssh_url_to_repo'] ?? null); $query->getFiles()->GitSshUrl = ($response_decoded['ssh_url_to_repo'] ?? null);
$query->Files->GitHttpUrl = ($response_decoded['http_url_to_repo'] ?? null); $query->getFiles()->GitHttpUrl = ($response_decoded['http_url_to_repo'] ?? null);
$query->Version = Functions::convertToSemVer($response_decoded['default_branch']); $query->setVersion(Functions::convertToSemVer($response_decoded['default_branch']));
$query->ReleaseDescription = ($response_decoded['description'] ?? null); $query->setReleaseDescription($response_decoded['description'] ?? null);
$query->ReleaseName = ($response_decoded['name'] ?? null); $query->setReleaseName($response_decoded['name'] ?? null);
return $query; return $query;
} }
@ -97,15 +95,15 @@
*/ */
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
{ {
$releases = self::getReleases($package_input->vendor, $package_input->package, $defined_remote_source, $entry); $releases = self::getReleases($package_input->getVendor(), $package_input->getPackage(), $defined_remote_source, $entry);
if(count($releases) === 0) if(count($releases) === 0)
{ {
throw new GitException(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->getVendor(), $package_input->getPackage(), $package_input->getVersion()));
} }
// Query the latest package only // Query the latest package only
if($package_input->version === Versions::LATEST) if($package_input->getVersion() === Versions::LATEST)
{ {
$latest_version = null; $latest_version = null;
foreach($releases as $release) foreach($releases as $release)
@ -126,7 +124,7 @@
} }
// Query a specific version // Query a specific version
if(!isset($releases[$package_input->version])) if(!isset($releases[$package_input->getVersion()]))
{ {
// Find the closest thing to the requested version // Find the closest thing to the requested version
$selected_version = null; $selected_version = null;
@ -138,7 +136,7 @@
continue; continue;
} }
if(VersionComparator::compareVersion($version, $package_input->version) === 1) if(VersionComparator::compareVersion($version, $package_input->getVersion()) === 1)
{ {
$selected_version = $version; $selected_version = $version;
} }
@ -146,17 +144,17 @@
if($selected_version === null) if($selected_version === null)
{ {
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)); throw new GitException(sprintf('Could not find a release for %s/%s with the version %s', $package_input->getVendor(), $package_input->getPackage(), $package_input->getVersion()));
} }
} }
else else
{ {
$selected_version = $package_input->version; $selected_version = $package_input->getVersion();
} }
if(!isset($releases[$selected_version])) if(!isset($releases[$selected_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)); throw new GitException(sprintf('Could not find a release for %s/%s with the version %s', $package_input->getVendor(), $package_input->getPackage(), $package_input->getVersion()));
} }
return $releases[$selected_version]; return $releases[$selected_version];
@ -217,9 +215,9 @@
foreach($response_decoded as $release) foreach($response_decoded as $release)
{ {
$query_results = new RepositoryQueryResults(); $query_results = new RepositoryQueryResults();
$query_results->ReleaseName = ($release['name'] ?? null); $query_results->setReleaseName($release['name'] ?? null);
$query_results->ReleaseDescription = ($release['description'] ?? null); $query_results->setReleaseDescription($release['description'] ?? null);
$query_results->Version = Functions::convertToSemVer($release['tag_name']); $query_results->setVersion(Functions::convertToSemVer($release['tag_name']));
if(isset($release['assets']['sources']) && count($release['assets']['sources']) > 0) if(isset($release['assets']['sources']) && count($release['assets']['sources']) > 0)
{ {
@ -227,25 +225,25 @@
{ {
if($source['format'] === 'zip') if($source['format'] === 'zip')
{ {
$query_results->Files->ZipballUrl = $source['url']; $query_results->getFiles()->ZipballUrl = $source['url'];
break; break;
} }
if($source['format'] === 'tar.gz') if($source['format'] === 'tar.gz')
{ {
$query_results->Files->ZipballUrl = $source['url']; $query_results->getFiles()->ZipballUrl = $source['url'];
break; break;
} }
if($source['format'] === 'ncc') if($source['format'] === 'ncc')
{ {
$query_results->Files->PackageUrl = $source['url']; $query_results->getFiles()->PackageUrl = $source['url'];
break; break;
} }
} }
} }
$return[$query_results->Version] = $query_results; $return[$query_results->getVersion()] = $query_results;
} }
return $return; return $return;

View file

@ -144,7 +144,7 @@ namespace ncc\Classes\NccExtension;
InstallConstants::INSTALL_PATH_DATA InstallConstants::INSTALL_PATH_DATA
], ],
[ [
$installationPaths->getInstallationPath(), $installationPaths->getInstallationpath(),
$installationPaths->getBinPath(), $installationPaths->getBinPath(),
$installationPaths->getSourcePath(), $installationPaths->getSourcePath(),
$installationPaths->getDataPath() $installationPaths->getDataPath()

View file

@ -65,31 +65,31 @@
{ {
$configuration = $manager->getProjectConfiguration(); $configuration = $manager->getProjectConfiguration();
if(Main::getLogLevel() !== null && Resolver::checkLogLevel(LogLevel::DEBUG, Main::getLogLevel())) if(Resolver::checkLogLevel(LogLevel::DEBUG, Main::getLogLevel()))
{ {
foreach($configuration->assembly->toArray() as $prop => $value) foreach($configuration->getAssembly()->toArray() as $prop => $value)
{ {
Console::outDebug(sprintf('assembly.%s: %s', $prop, ($value ?? 'n/a'))); Console::outDebug(sprintf('assembly.%s: %s', $prop, ($value ?? 'n/a')));
} }
foreach($configuration->project->getCompiler()->toArray() as $prop => $value) foreach($configuration->getProject()->getCompiler()->toArray() as $prop => $value)
{ {
Console::outDebug(sprintf('compiler.%s: %s', $prop, ($value ?? 'n/a'))); Console::outDebug(sprintf('compiler.%s: %s', $prop, ($value ?? 'n/a')));
} }
} }
// Select the correct compiler for the specified extension // Select the correct compiler for the specified extension
if (strtolower($configuration->project->getCompiler()->getExtension()) === CompilerExtensions::PHP) if (strtolower($configuration->getProject()->getCompiler()->getExtension()) === CompilerExtensions::PHP)
{ {
/** @var CompilerInterface $Compiler */ /** @var CompilerInterface $Compiler */
$Compiler = new PhpCompiler($configuration, $manager->getProjectPath()); $Compiler = new PhpCompiler($configuration, $manager->getProjectPath());
} }
else else
{ {
throw new NotSupportedException('The compiler extension \'' . $configuration->project->getCompiler()->getExtension() . '\' is not supported'); throw new NotSupportedException('The compiler extension \'' . $configuration->getProject()->getCompiler()->getExtension() . '\' is not supported');
} }
$build_configuration = $configuration->build->getBuildConfiguration($build_configuration)->getName(); $build_configuration = $configuration->getBuild()->getBuildConfiguration($build_configuration)->getName();
Console::out(sprintf('Building %s=%s', $configuration->assembly->getPackage(), $configuration->assembly->getVersion())); Console::out(sprintf('Building %s=%s', $configuration->getAssembly()->getPackage(), $configuration->getAssembly()->getVersion()));
$Compiler->prepare($build_configuration); $Compiler->prepare($build_configuration);
$Compiler->build(); $Compiler->build();
@ -113,25 +113,25 @@
try try
{ {
if($project_type->ProjectType === ProjectType::COMPOSER) if($project_type->getProjectType() === ProjectType::COMPOSER)
{ {
$project_path = ComposerSourceBuiltin::fromLocal($project_type->ProjectPath); $project_path = ComposerSourceBuiltin::fromLocal($project_type->getProjectPath());
} }
elseif($project_type->ProjectType === ProjectType::NCC) elseif($project_type->getProjectType() === ProjectType::NCC)
{ {
$project_manager = new ProjectManager($project_type->ProjectPath); $project_manager = new ProjectManager($project_type->getProjectPath());
$project_manager->getProjectConfiguration()->assembly->setVersion($version); $project_manager->getProjectConfiguration()->getAssembly()->setVersion($version);
$project_path = $project_manager->build(); $project_path = $project_manager->build();
} }
else else
{ {
throw new NotSupportedException(sprintf('Failed to compile %s, project type %s is not supported', $project_type->ProjectPath, $project_type->ProjectType)); throw new NotSupportedException(sprintf('Failed to compile %s, project type %s is not supported', $project_type->getProjectPath(), $project_type->getProjectType()));
} }
if($version !== null) if($version !== null)
{ {
$package = Package::load($project_path); $package = Package::load($project_path);
$package->assembly->setVersion(Functions::convertToSemVer($version)); $package->getAssembly()->setVersion(Functions::convertToSemVer($version));
$package->save($project_path); $package->save($project_path);
} }
@ -156,18 +156,18 @@
*/ */
public static function compileExecutionPolicies(string $path, ProjectConfiguration $configuration): array public static function compileExecutionPolicies(string $path, ProjectConfiguration $configuration): array
{ {
if(count($configuration->execution_policies) === 0) if(count($configuration->getExecutionPolicies()) === 0)
{ {
return []; return [];
} }
Console::out('Compiling Execution Policies'); Console::out('Compiling Execution Policies');
$total_items = count($configuration->execution_policies); $total_items = count($configuration->getExecutionPolicies());
$execution_units = []; $execution_units = [];
$processed_items = 1; $processed_items = 1;
/** @var ProjectConfiguration\ExecutionPolicy $policy */ /** @var ProjectConfiguration\ExecutionPolicy $policy */
foreach($configuration->execution_policies as $policy) foreach($configuration->getExecutionPolicies() as $policy)
{ {
Console::outVerbose(sprintf('Compiling Execution Policy %s', $policy->getName())); Console::outVerbose(sprintf('Compiling Execution Policy %s', $policy->getName()));
@ -206,7 +206,7 @@
// Write the package to disk // Write the package to disk
$FileSystem = new Filesystem(); $FileSystem = new Filesystem();
$BuildConfiguration = $configuration->build->getBuildConfiguration($build_configuration); $BuildConfiguration = $configuration->getBuild()->getBuildConfiguration($build_configuration);
if(!$FileSystem->exists($path . $BuildConfiguration->getOutputPath())) if(!$FileSystem->exists($path . $BuildConfiguration->getOutputPath()))
{ {
Console::outDebug(sprintf('creating output directory %s', $path . $BuildConfiguration->getOutputPath())); Console::outDebug(sprintf('creating output directory %s', $path . $BuildConfiguration->getOutputPath()));
@ -215,7 +215,7 @@
// Finally write the package to the disk // Finally write the package to the disk
$FileSystem->mkdir($path . $BuildConfiguration->getOutputPath()); $FileSystem->mkdir($path . $BuildConfiguration->getOutputPath());
$output_file = $path . $BuildConfiguration->getOutputPath() . DIRECTORY_SEPARATOR . $package->assembly->getPackage() . '.ncc'; $output_file = $path . $BuildConfiguration->getOutputPath() . DIRECTORY_SEPARATOR . $package->getAssembly()->getPackage() . '.ncc';
if($FileSystem->exists($output_file)) if($FileSystem->exists($output_file))
{ {
Console::outDebug(sprintf('removing existing package %s', $output_file)); Console::outDebug(sprintf('removing existing package %s', $output_file));
@ -244,41 +244,41 @@
*/ */
public static function compilePackageConstants(Package $package, array $refs): void public static function compilePackageConstants(Package $package, array $refs): void
{ {
if($package->assembly !== null) if($package->getAssembly() !== null)
{ {
$assembly = []; $assembly = [];
foreach($package->assembly->toArray() as $key => $value) foreach($package->getAssembly()->toArray() as $key => $value)
{ {
Console::outDebug(sprintf('compiling constant Assembly.%s (%s)', $key, implode(', ', array_keys($refs)))); Console::outDebug(sprintf('compiling constant Assembly.%s (%s)', $key, implode(', ', array_keys($refs))));
$assembly[$key] = self::compileConstants($value, $refs); $assembly[$key] = self::compileConstants($value, $refs);
} }
$package->assembly = Assembly::fromArray($assembly); $package->setAssembly(Assembly::fromArray($assembly));
unset($assembly); unset($assembly);
} }
if($package->execution_units !== null && count($package->execution_units) > 0) if(count($package->getExecutionUnits()) > 0)
{ {
$units = []; $units = [];
foreach($package->execution_units as $executionUnit) foreach($package->ExecutionUnits() as $executionUnit)
{ {
Console::outDebug(sprintf('compiling execution unit constant %s (%s)', $executionUnit->getExecutionPolicy()->getName(), implode(', ', array_keys($refs)))); Console::outDebug(sprintf('compiling execution unit constant %s (%s)', $executionUnit->getExecutionPolicy()->getName(), implode(', ', array_keys($refs))));
$units[] = self::compileExecutionUnitConstants($executionUnit, $refs); $units[] = self::compileExecutionUnitConstants($executionUnit, $refs);
} }
$package->execution_units = $units; $package->setExecutionUnits($units);
unset($units); unset($units);
} }
$compiled_constants = []; $compiled_constants = [];
foreach($package->header->getRuntimeConstants() as $name => $value) foreach($package->getHeader()->getRuntimeConstants() as $name => $value)
{ {
Console::outDebug(sprintf('compiling runtime constant %s (%s)', $name, implode(', ', array_keys($refs)))); Console::outDebug(sprintf('compiling runtime constant %s (%s)', $name, implode(', ', array_keys($refs))));
$compiled_constants[$name] = self::compileConstants($value, $refs); $compiled_constants[$name] = self::compileConstants($value, $refs);
} }
$options = []; $options = [];
foreach($package->header->getOptions() as $name => $value) foreach($package->getHeader()->getOptions() as $name => $value)
{ {
if(is_array($value)) if(is_array($value))
{ {
@ -301,8 +301,8 @@
} }
} }
$package->header->setOptions($options); $package->getHeader()->setOptions($options);
$package->header->setRuntimeConstants($compiled_constants); $package->getHeader()->setRuntimeConstants($compiled_constants);
} }
/** /**

View file

@ -103,35 +103,35 @@
} }
// Select the build configuration // Select the build configuration
$selected_build_configuration = $this->project_configuration->build->getBuildConfiguration($build_configuration); $selected_build_configuration = $this->project_configuration->getBuild()->getBuildConfiguration($build_configuration);
// Create the package object // Create the package object
$this->package = new Package(); $this->package = new Package();
$this->package->assembly = $this->project_configuration->assembly; $this->package->setAssembly($this->project_configuration->getAssembly());
$this->package->dependencies = $this->project_configuration->build->getDependencies(); $this->package->setDependencies($this->project_configuration->getBuild()->getDependencies());
$this->package->main_execution_policy = $this->project_configuration->build->getMain(); $this->package->setMainExecutionPolicy($this->project_configuration->getBuild()->getMain());
// Add the option to create a symbolic link to the package // Add the option to create a symbolic link to the package
if(isset($this->project_configuration->project->getOptions()['create_symlink']) && $this->project_configuration->project->getOptions()['create_symlink'] === True) if(isset($this->project_configuration->getProject()->getOptions()['create_symlink']) && $this->project_configuration->getProject()->getOptions()['create_symlink'] === True)
{ {
$this->package->header->setOption('create_symlink', true); $this->package->getHeader()->setOption('create_symlink', true);
} }
// Add both the defined constants from the build configuration and the global constants. // Add both the defined constants from the build configuration and the global constants.
// Global constants are overridden // Global constants are overridden
$this->package->header->setRuntimeConstants(array_merge( $this->package->getHeader()->setRuntimeConstants(array_merge(
$selected_build_configuration->getDefineConstants(), $selected_build_configuration->getDefineConstants(),
($this->project_configuration->build->getDefineConstants()), ($this->project_configuration->getBuild()->getDefineConstants()),
($this->package->header->getRuntimeConstants() ?? []) ($this->package->getHeader()->getRuntimeConstants() ?? [])
)); ));
$this->package->header->setCompilerExtension($this->project_configuration->project->getCompiler()); $this->package->getHeader()->setCompilerExtension($this->project_configuration->getProject()->getCompiler());
$this->package->header->setCompilerVersion(NCC_VERSION_NUMBER); $this->package->getHeader()->setCompilerVersion(NCC_VERSION_NUMBER);
$this->package->header->setOptions($this->project_configuration->project->getOptions()); $this->package->getHeader()->setOptions($this->project_configuration->getProject()->getOptions());
if($this->project_configuration->project->getUpdateSource() !== null) if($this->project_configuration->getProject()->getUpdateSource() !== null)
{ {
$this->package->header->setUpdateSource($this->project_configuration->project->getUpdateSource()); $this->package->getHeader()->setUpdateSource($this->project_configuration->getProject()->getUpdateSource());
} }
Console::outDebug('scanning project files'); Console::outDebug('scanning project files');
@ -157,7 +157,7 @@
$directory_scanner->setExcludes($selected_build_configuration->getExcludeFiles()); $directory_scanner->setExcludes($selected_build_configuration->getExcludeFiles());
} }
$source_path = $this->path . $this->project_configuration->build->getSourcePath(); $source_path = $this->path . $this->project_configuration->getBuild()->getSourcePath();
// TODO: Re-implement the scanning process outside the compiler, as this is will be redundant // TODO: Re-implement the scanning process outside the compiler, as this is will be redundant
// Scan for components first. // Scan for components first.
@ -176,14 +176,14 @@
$component = new Package\Component(); $component = new Package\Component();
$component->setName(Functions::removeBasename($item->getPathname(), $this->path)); $component->setName(Functions::removeBasename($item->getPathname(), $this->path));
$this->package->components[] = $component; $this->package->addComponent($component);
Console::outVerbose(sprintf('Found component %s', $component->getName())); Console::outVerbose(sprintf('Found component %s', $component->getName()));
} }
if(count($this->package->components) > 0) if(count($this->package->getComponents()) > 0)
{ {
Console::outVerbose(count($this->package->components) . ' component(s) found'); Console::outVerbose(count($this->package->getComponents()) . ' component(s) found');
} }
else else
{ {
@ -216,14 +216,14 @@
$resource = new Package\Resource(); $resource = new Package\Resource();
$resource->setName(Functions::removeBasename($item->getPathname(), $this->path)); $resource->setName(Functions::removeBasename($item->getPathname(), $this->path));
$this->package->resources[] = $resource; $this->package->addResource($resource);
Console::outVerbose(sprintf('found resource %s', $resource->getName())); Console::outVerbose(sprintf('found resource %s', $resource->getName()));
} }
if(count($this->package->resources) > 0) if(count($this->package->getResources()) > 0)
{ {
Console::outVerbose(count($this->package->resources) . ' resources(s) found'); Console::outVerbose(count($this->package->getResources()) . ' resources(s) found');
} }
else else
{ {
@ -237,9 +237,9 @@
$selected_dependencies = []; $selected_dependencies = [];
if(count($this->project_configuration->build->getDependencies()) > 0) if(count($this->project_configuration->getBuild()->getDependencies()) > 0)
{ {
$selected_dependencies = array_merge($selected_dependencies, $this->project_configuration->build->getDependencies()); $selected_dependencies = array_merge($selected_dependencies, $this->project_configuration->getBuild()->getDependencies());
} }
if(count($selected_build_configuration->getDependencies()) > 0) if(count($selected_build_configuration->getDependencies()) > 0)
@ -310,9 +310,9 @@
$this->package->addDependency($dependency); $this->package->addDependency($dependency);
} }
if(count($this->package->dependencies) > 0) if(count($this->package->getDependencies()) > 0)
{ {
Console::outVerbose(count($this->package->dependencies) . ' dependency(ies) found'); Console::outVerbose(count($this->package->getDependencies()) . ' dependency(ies) found');
} }
else else
{ {
@ -338,7 +338,7 @@
$this->compileResources(); $this->compileResources();
PackageCompiler::compilePackageConstants($this->package, [ PackageCompiler::compilePackageConstants($this->package, [
ConstantReferences::ASSEMBLY => $this->project_configuration->assembly, ConstantReferences::ASSEMBLY => $this->project_configuration->getAssembly(),
ConstantReferences::BUILD => null, ConstantReferences::BUILD => null,
ConstantReferences::DATE_TIME => time() ConstantReferences::DATE_TIME => time()
]); ]);
@ -361,13 +361,13 @@
throw new BuildException('The prepare() method must be called before building the package'); throw new BuildException('The prepare() method must be called before building the package');
} }
if(count($this->package->resources) === 0) if(count($this->package->getResources()) === 0)
{ {
return; return;
} }
// Process the resources // Process the resources
$total_items = count($this->package->resources); $total_items = count($this->package->getResources());
$processed_items = 1; $processed_items = 1;
$resources = []; $resources = [];
@ -376,7 +376,7 @@
Console::out('Processing resources'); Console::out('Processing resources');
} }
foreach($this->package->resources as $resource) foreach($this->package->getResources() as $resource)
{ {
/** @noinspection DisconnectedForeachInstructionInspection */ /** @noinspection DisconnectedForeachInstructionInspection */
if($total_items > 5) if($total_items > 5)
@ -386,7 +386,7 @@
// Get the data and // Get the data and
$resource->setData(Base64::encode(IO::fread(Functions::correctDirectorySeparator($this->path . $resource->getName())))); $resource->setData(Base64::encode(IO::fread(Functions::correctDirectorySeparator($this->path . $resource->getName()))));
$resource->setName(str_replace($this->project_configuration->build->getSourcePath(), (string)null, $resource->getName())); $resource->setName(str_replace($this->project_configuration->getBuild()->getSourcePath(), (string)null, $resource->getName()));
$resource->updateChecksum(); $resource->updateChecksum();
$resources[] = $resource; $resources[] = $resource;
@ -394,7 +394,7 @@
} }
// Update the resources // Update the resources
$this->package->resources = $resources; $this->package->setResources($resources);
} }
/** /**
@ -412,12 +412,12 @@
throw new BuildException('The prepare() method must be called before building the package'); throw new BuildException('The prepare() method must be called before building the package');
} }
if(count($this->package->components) === 0) if(count($this->package->getComponents()) === 0)
{ {
return; return;
} }
$total_items = count($this->package->components); $total_items = count($this->package->getComponents());
$processed_items = 1; $processed_items = 1;
$components = []; $components = [];
@ -427,7 +427,7 @@
} }
// Process the components and attempt to create an AST representation of the source // Process the components and attempt to create an AST representation of the source
foreach($this->package->components as $component) foreach($this->package->getComponents() as $component)
{ {
if($total_items > 5) if($total_items > 5)
{ {
@ -454,7 +454,7 @@
unset($parser); unset($parser);
$component->setName(str_replace($this->project_configuration->build->getSourcePath(), (string)null, $component->getName())); $component->setName(str_replace($this->project_configuration->getBuild()->getSourcePath(), (string)null, $component->getName()));
$component->updateChecksum(); $component->updateChecksum();
$components[] = $component; $components[] = $component;
++$processed_items; ++$processed_items;
@ -463,7 +463,7 @@
} }
// Update the components // Update the components
$this->package->components = $components; $this->package->setComponents($components);
} }
/** /**
@ -474,7 +474,7 @@
*/ */
public function compileExecutionPolicies(): void public function compileExecutionPolicies(): void
{ {
$this->package->execution_units = PackageCompiler::compileExecutionPolicies($this->path, $this->project_configuration); $this->package->setExecutionUnits(PackageCompiler::compileExecutionPolicies($this->path, $this->project_configuration));
} }
/** /**

View file

@ -24,7 +24,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
final class ExceptionCodes final class ExceptionCodes
{ {

View file

@ -24,7 +24,7 @@ namespace ncc\Enums;
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
final class RegexPatterns final class RegexPatterns
{ {

View file

@ -97,7 +97,7 @@
} }
$VaultObject = new Vault(); $VaultObject = new Vault();
$VaultObject->version = Versions::CREDENTIALS_STORE_VERSION; $VaultObject->setVersion(Versions::CREDENTIALS_STORE_VERSION);
IO::fwrite($this->store_path, ZiProto::encode($VaultObject->toArray()), 0744); IO::fwrite($this->store_path, ZiProto::encode($VaultObject->toArray()), 0744);
} }
@ -125,15 +125,14 @@
return; return;
} }
$VaultArray = ZiProto::decode(IO::fread($this->store_path)); $vault_object = Vault::fromArray(ZiProto::decode(IO::fread($this->store_path)));
$VaultObject = Vault::fromArray($VaultArray);
if($VaultObject->version !== Versions::CREDENTIALS_STORE_VERSION) if($vault_object->getVersion() !== Versions::CREDENTIALS_STORE_VERSION)
{ {
throw new RuntimeException('Credentials store version mismatch'); throw new RuntimeException('Credentials store version mismatch');
} }
$this->vault = $VaultObject; $this->vault = $vault_object;
} }
/** /**

View file

@ -530,7 +530,7 @@
if($unit === null) if($unit === null)
{ {
throw new OperationException(sprintf('No execution unit named \'%s\' is available for package \'%s\'', $unit_name, $package->assembly->getPackage())); throw new OperationException(sprintf('No execution unit named \'%s\' is available for package \'%s\'', $unit_name, $package->getAssembly()->getPackage()));
} }
// Get the required units // Get the required units
@ -557,13 +557,13 @@
} }
// Install the units temporarily // Install the units temporarily
$this->addUnit($package->assembly->getPackage(), $package->assembly->getVersion(), $unit, true); $this->addUnit($package->getAssembly()->getPackage(), $package->getAssembly()->getVersion(), $unit, true);
foreach($required_units as $r_unit) foreach($required_units as $r_unit)
{ {
$this->addUnit($package->assembly->getPackage(), $package->assembly->getVersion(), $r_unit, true); $this->addUnit($package->getAssembly()->getPackage(), $package->getAssembly()->getVersion(), $r_unit, true);
} }
$this->executeUnit($package->assembly->getPackage(), $package->assembly->getVersion(), $unit_name); $this->executeUnit($package->getAssembly()->getPackage(), $package->getAssembly()->getVersion(), $unit_name);
$this->cleanTemporaryUnits(); $this->cleanTemporaryUnits();
} }

View file

@ -118,14 +118,14 @@
$package = Package::load($package_path); $package = Package::load($package_path);
if(RuntimeCache::get(sprintf('installed.%s=%s', $package->assembly->getPackage(), $package->assembly->getVersion()))) if(RuntimeCache::get(sprintf('installed.%s=%s', $package->getAssembly()->getPackage(), $package->getAssembly()->getVersion())))
{ {
Console::outDebug(sprintf('skipping installation of %s=%s, already processed', $package->assembly->getPackage(), $package->assembly->getVersion())); Console::outDebug(sprintf('skipping installation of %s=%s, already processed', $package->getAssembly()->getPackage(), $package->getAssembly()->getVersion()));
return $package->assembly->getPackage(); return $package->getAssembly()->getPackage();
} }
$extension = $package->header->getCompilerExtension()->getExtension(); $extension = $package->getHeader()->getCompilerExtension()->getExtension();
$installation_paths = new InstallationPaths($this->packages_path . DIRECTORY_SEPARATOR . $package->assembly->getPackage() . '=' . $package->assembly->getVersion()); $installation_paths = new InstallationPaths($this->packages_path . DIRECTORY_SEPARATOR . $package->getAssembly()->getPackage() . '=' . $package->getAssembly()->getVersion());
$installer = match ($extension) $installer = match ($extension)
{ {
@ -133,20 +133,20 @@
default => throw new NotSupportedException(sprintf('Compiler extension %s is not supported with ncc', $extension)) default => throw new NotSupportedException(sprintf('Compiler extension %s is not supported with ncc', $extension))
}; };
if($this->getPackageVersion($package->assembly->getPackage(), $package->assembly->getVersion()) !== null) if($this->getPackageVersion($package->getAssembly()->getPackage(), $package->getAssembly()->getVersion()) !== null)
{ {
if(in_array(InstallPackageOptions::REINSTALL, $options, true)) if(in_array(InstallPackageOptions::REINSTALL, $options, true))
{ {
if($this->getPackageLockManager()?->getPackageLock()?->packageExists($package->assembly->getPackage(), $package->assembly->getVersion())) if($this->getPackageLockManager()?->getPackageLock()?->packageExists($package->getAssembly()->getPackage(), $package->getAssembly()->getVersion()))
{ {
$this->getPackageLockManager()?->getPackageLock()?->removePackageVersion( $this->getPackageLockManager()?->getPackageLock()?->removePackageVersion(
$package->assembly->getPackage(), $package->assembly->getVersion() $package->getAssembly()->getPackage(), $package->getAssembly()->getVersion()
); );
} }
} }
else else
{ {
throw new PackageException('The package ' . $package->assembly->getPackage() . '=' . $package->assembly->getVersion() . ' is already installed'); throw new PackageException('The package ' . $package->getAssembly()->getPackage() . '=' . $package->getAssembly()->getVersion() . ' is already installed');
} }
} }
@ -156,9 +156,9 @@
]); ]);
// Process all the required dependencies before installing the package // Process all the required dependencies before installing the package
if($package->dependencies !== null && count($package->dependencies) > 0 && !in_array(InstallPackageOptions::SKIP_DEPENDENCIES, $options, true)) if(count($package->getDependencies()) > 0 && !in_array(InstallPackageOptions::SKIP_DEPENDENCIES, $options, true))
{ {
foreach($package->dependencies as $dependency) foreach($package->getDependencies() as $dependency)
{ {
// Uninstall the dependency if the option Reinstall is passed on // Uninstall the dependency if the option Reinstall is passed on
if(in_array(InstallPackageOptions::REINSTALL, $options, true) && $this->getPackageLockManager()?->getPackageLock()?->packageExists($dependency->getName(), $dependency->getVersion())) if(in_array(InstallPackageOptions::REINSTALL, $options, true) && $this->getPackageLockManager()?->getPackageLock()?->packageExists($dependency->getName(), $dependency->getVersion()))
@ -181,36 +181,36 @@
if(Resolver::checkLogLevel(LogLevel::DEBUG, Main::getLogLevel())) if(Resolver::checkLogLevel(LogLevel::DEBUG, Main::getLogLevel()))
{ {
Console::outDebug(sprintf('installer.install_path: %s', $installation_paths->getInstallationPath())); Console::outDebug(sprintf('installer.install_path: %s', $installation_paths->getInstallationpath()));
Console::outDebug(sprintf('installer.data_path: %s', $installation_paths->getDataPath())); Console::outDebug(sprintf('installer.data_path: %s', $installation_paths->getDataPath()));
Console::outDebug(sprintf('installer.bin_path: %s', $installation_paths->getBinPath())); Console::outDebug(sprintf('installer.bin_path: %s', $installation_paths->getBinPath()));
Console::outDebug(sprintf('installer.src_path: %s', $installation_paths->getSourcePath())); Console::outDebug(sprintf('installer.src_path: %s', $installation_paths->getSourcePath()));
foreach($package->assembly->toArray() as $prop => $value) foreach($package->getAssembly()->toArray() as $prop => $value)
{ {
Console::outDebug(sprintf('assembly.%s: %s', $prop, ($value ?? 'n/a'))); Console::outDebug(sprintf('assembly.%s: %s', $prop, ($value ?? 'n/a')));
} }
foreach($package->header->getCompilerExtension()->toArray() as $prop => $value) foreach($package->getHeader()->getCompilerExtension()->toArray() as $prop => $value)
{ {
Console::outDebug(sprintf('header.compiler.%s: %s', $prop, ($value ?? 'n/a'))); Console::outDebug(sprintf('header.compiler.%s: %s', $prop, ($value ?? 'n/a')));
} }
} }
Console::out('Installing ' . $package->assembly->getPackage()); Console::out('Installing ' . $package->getAssembly()->getPackage());
// Four For Directory Creation, preInstall, postInstall & initData methods // Four For Directory Creation, preInstall, postInstall & initData methods
$steps = (4 + count($package->components) + count ($package->resources) + count ($package->execution_units)); $steps = (4 + count($package->getComponents()) + count ($package->getResources()) + count ($package->getExecutionUnits()));
// Include the Execution units // Include the Execution units
if($package->installer?->getPreInstall() !== null) if($package->getInstaller()?->getPreInstall() !== null)
{ {
$steps += count($package->installer->getPreInstall()); $steps += count($package->getInstaller()?->getPreInstall());
} }
if($package->installer?->getPostInstall()!== null) if($package->getInstaller()?->getPostInstall()!== null)
{ {
$steps += count($package->installer->getPostInstall()); $steps += count($package->getInstaller()->getPostInstall());
} }
$current_steps = 0; $current_steps = 0;
@ -218,7 +218,7 @@
try try
{ {
$filesystem->mkdir($installation_paths->getInstallationPath(), 0755); $filesystem->mkdir($installation_paths->getInstallationpath(), 0755);
$filesystem->mkdir($installation_paths->getBinPath(), 0755); $filesystem->mkdir($installation_paths->getBinPath(), 0755);
$filesystem->mkdir($installation_paths->getDataPath(), 0755); $filesystem->mkdir($installation_paths->getDataPath(), 0755);
$filesystem->mkdir($installation_paths->getSourcePath(), 0755); $filesystem->mkdir($installation_paths->getSourcePath(), 0755);
@ -258,9 +258,9 @@
throw new OperationException('Pre installation stage failed, ' . $e->getMessage(), $e); throw new OperationException('Pre installation stage failed, ' . $e->getMessage(), $e);
} }
if($package->installer?->getPreInstall() !== null && count($package->installer->getPreInstall()) > 0) if($package->getInstaller()?->getPreInstall() !== null && count($package->getInstaller()->getPreInstall()) > 0)
{ {
foreach($package->installer->getPreInstall() as $unit_name) foreach($package->getInstaller()->getPreInstall() as $unit_name)
{ {
try try
{ {
@ -277,7 +277,7 @@
} }
// Process & Install the components // Process & Install the components
foreach($package->components as $component) foreach($package->getComponents() as $component)
{ {
Console::outDebug(sprintf('processing component %s (%s)', $component->getName(), $component->getDataType())); Console::outDebug(sprintf('processing component %s (%s)', $component->getName(), $component->getDataType()));
@ -307,7 +307,7 @@
} }
// Process & Install the resources // Process & Install the resources
foreach($package->resources as $resource) foreach($package->getResources() as $resource)
{ {
Console::outDebug(sprintf('processing resource %s', $resource->getName())); Console::outDebug(sprintf('processing resource %s', $resource->getName()));
@ -337,7 +337,7 @@
} }
// Install execution units // Install execution units
if($package->execution_units !== null && count($package->execution_units) > 0) if($package->getExecutionUnits() !== null && count($package->getExecutionUnits()) > 0)
{ {
Console::outDebug('package contains execution units, processing'); Console::outDebug('package contains execution units, processing');
@ -345,10 +345,10 @@
$unit_paths = []; $unit_paths = [];
/** @var Package\ExecutionUnit $executionUnit */ /** @var Package\ExecutionUnit $executionUnit */
foreach($package->execution_units as $executionUnit) foreach($package->getExecutionUnits() as $executionUnit)
{ {
Console::outDebug(sprintf('processing execution unit %s', $executionUnit->getExecutionPolicy()->getName())); Console::outDebug(sprintf('processing execution unit %s', $executionUnit->getExecutionPolicy()->getName()));
$execution_pointer_manager->addUnit($package->assembly->getPackage(), $package->assembly->getVersion(), $executionUnit); $execution_pointer_manager->addUnit($package->getAssembly()->getPackage(), $package->getAssembly()->getVersion(), $executionUnit);
++$current_steps; ++$current_steps;
Console::inlineProgressBar($current_steps, $steps); Console::inlineProgressBar($current_steps, $steps);
} }
@ -361,17 +361,17 @@
} }
// After execution units are installed, create a symlink if needed // After execution units are installed, create a symlink if needed
if(!is_null($package->header->getOption('create_symlink')) && $package->header->getOption('create_symlink')) if(!is_null($package->getHeader()->getOption('create_symlink')) && $package->getHeader()->getOption('create_symlink'))
{ {
if($package->main_execution_policy === null) if($package->getMainExecutionPolicy() === null)
{ {
throw new OperationException('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->getPackage())); Console::outDebug(sprintf('creating symlink to %s', $package->getAssembly()->getPackage()));
$SymlinkManager = new SymlinkManager(); $SymlinkManager = new SymlinkManager();
$SymlinkManager->add($package->assembly->getPackage(), $package->main_execution_policy); $SymlinkManager->add($package->getAssembly()->getPackage(), $package->getMainExecutionPolicy());
} }
// Execute the post-installation stage after the installation is complete // Execute the post-installation stage after the installation is complete
@ -389,11 +389,11 @@
throw new OperationException('Post installation stage failed, ' . $e->getMessage(), $e); throw new OperationException('Post installation stage failed, ' . $e->getMessage(), $e);
} }
if($package->installer?->getPostInstall() !== null && count($package->installer->getPostInstall()) > 0) if($package->getInstaller()?->getPostInstall() !== null && count($package->getInstaller()->getPostInstall()) > 0)
{ {
Console::outDebug('executing post-installation units'); Console::outDebug('executing post-installation units');
foreach($package->installer->getPostInstall() as $unit_name) foreach($package->getInstaller()->getPostInstall() as $unit_name)
{ {
try try
{ {
@ -415,29 +415,29 @@
Console::outDebug('no post-installation units to execute'); Console::outDebug('no post-installation units to execute');
} }
if($package->header->getUpdateSource()?->getRepository() !== null) if($package->getHeader()->getUpdateSource()?->getRepository() !== null)
{ {
$sources_manager = new RemoteSourcesManager(); $sources_manager = new RemoteSourcesManager();
if($sources_manager->getRemoteSource($package->header->getUpdateSource()->getRepository()->getName()) === null) if($sources_manager->getRemoteSource($package->getHeader()->getUpdateSource()->getRepository()->getName()) === null)
{ {
Console::outVerbose('Adding remote source ' . $package->header->getUpdateSource()->getRepository()->getName()); Console::outVerbose('Adding remote source ' . $package->getHeader()->getUpdateSource()->getRepository()->getName());
$defined_remote_source = new DefinedRemoteSource(); $defined_remote_source = new DefinedRemoteSource();
$defined_remote_source->setName($package->header->getUpdateSource()?->getRepository()?->getName()); $defined_remote_source->setName($package->getHeader()->getUpdateSource()?->getRepository()?->getName());
$defined_remote_source->setHost($package->header->getUpdateSource()?->getRepository()?->getHost()); $defined_remote_source->setHost($package->getHeader()->getUpdateSource()?->getRepository()?->getHost());
$defined_remote_source->setType($package->header->getUpdateSource()?->getRepository()?->getType()); $defined_remote_source->setType($package->getHeader()->getUpdateSource()?->getRepository()?->getType());
$defined_remote_source->setSsl($package->header->getUpdateSource()?->getRepository()?->isSsl()); $defined_remote_source->setSsl($package->getHeader()->getUpdateSource()?->getRepository()?->isSsl());
$sources_manager->addRemoteSource($defined_remote_source); $sources_manager->addRemoteSource($defined_remote_source);
} }
} }
$this->getPackageLockManager()?->getPackageLock()?->addPackage($package, $installation_paths->getInstallationPath()); $this->getPackageLockManager()?->getPackageLock()?->addPackage($package, $installation_paths->getInstallationpath());
$this->getPackageLockManager()?->save(); $this->getPackageLockManager()?->save();
RuntimeCache::set(sprintf('installed.%s=%s', $package->assembly->getPackage(), $package->assembly->getVersion()), true); RuntimeCache::set(sprintf('installed.%s=%s', $package->getAssembly()->getPackage(), $package->getAssembly()->getVersion()), true);
return $package->assembly->getPackage(); return $package->getAssembly()->getPackage();
} }
/** /**
@ -452,29 +452,24 @@
{ {
$input = new RemotePackageInput($source); $input = new RemotePackageInput($source);
if($input->source === null) if($input->getSource() === null)
{ {
throw new PackageException('No source specified'); throw new PackageException('No source specified');
} }
if($input->package === null) if($input->getVersion() === null)
{ {
throw new PackageException('No package specified'); $input->setVersion(Versions::LATEST);
} }
if($input->version === null) Console::outVerbose('Fetching package ' . $input->getPackage() . ' from ' . $input->getSource() . ' (' . $input->getVersion() . ')');
{
$input->version = Versions::LATEST;
}
Console::outVerbose('Fetching package ' . $input->package . ' from ' . $input->source . ' (' . $input->version . ')'); $remote_source_type = Resolver::detectRemoteSourceType($input->getSource());
$remote_source_type = Resolver::detectRemoteSourceType($input->source);
if($remote_source_type === RemoteSourceType::BUILTIN) if($remote_source_type === RemoteSourceType::BUILTIN)
{ {
Console::outDebug('using builtin source ' . $input->source); Console::outDebug('using builtin source ' . $input->getSource());
if ($input->source === 'composer') if ($input->getSource() === 'composer')
{ {
try try
{ {
@ -486,29 +481,29 @@
} }
} }
throw new NotSupportedException(sprintf('Builtin source %s is not supported', $input->source)); throw new NotSupportedException(sprintf('Builtin source %s is not supported', $input->getSource()));
} }
if($remote_source_type === RemoteSourceType::DEFINED) if($remote_source_type === RemoteSourceType::DEFINED)
{ {
Console::outDebug('using defined source ' . $input->source); Console::outDebug('using defined source ' . $input->getSource());
/** @noinspection CallableParameterUseCaseInTypeContextInspection */ /** @noinspection CallableParameterUseCaseInTypeContextInspection */
$source = (new RemoteSourcesManager())->getRemoteSource($input->source); $source = (new RemoteSourcesManager())->getRemoteSource($input->getSource());
if($source === null) if($source === null)
{ {
throw new OperationException('Remote source ' . $input->source . ' is not defined'); throw new OperationException('Remote source ' . $input->getSource() . ' is not defined');
} }
$repositoryQueryResults = Functions::getRepositoryQueryResults($input, $source, $entry); $repositoryQueryResults = Functions::getRepositoryQueryResults($input, $source, $entry);
$exceptions = []; $exceptions = [];
if($repositoryQueryResults->Files->ZipballUrl !== null) if($repositoryQueryResults->getFiles()->ZipballUrl !== null)
{ {
try try
{ {
Console::outDebug(sprintf('fetching package %s from %s', $input->package, $repositoryQueryResults->Files->ZipballUrl)); Console::outDebug(sprintf('fetching package %s from %s', $input->getPackage(), $repositoryQueryResults->getFiles()->ZipballUrl));
$archive = Functions::downloadGitServiceFile($repositoryQueryResults->Files->ZipballUrl, $entry); $archive = Functions::downloadGitServiceFile($repositoryQueryResults->getFiles()->ZipballUrl, $entry);
return PackageCompiler::tryCompile(Functions::extractArchive($archive), $repositoryQueryResults->Version); return PackageCompiler::tryCompile(Functions::extractArchive($archive), $repositoryQueryResults->getVersion());
} }
catch(Throwable $e) catch(Throwable $e)
{ {
@ -517,13 +512,13 @@
} }
} }
if($repositoryQueryResults->Files->TarballUrl !== null) if($repositoryQueryResults->getFiles()->TarballUrl !== null)
{ {
try try
{ {
Console::outDebug(sprintf('fetching package %s from %s', $input->package, $repositoryQueryResults->Files->TarballUrl)); Console::outDebug(sprintf('fetching package %s from %s', $input->getPackage(), $repositoryQueryResults->getFiles()->TarballUrl));
$archive = Functions::downloadGitServiceFile($repositoryQueryResults->Files->TarballUrl, $entry); $archive = Functions::downloadGitServiceFile($repositoryQueryResults->getFiles()->TarballUrl, $entry);
return PackageCompiler::tryCompile(Functions::extractArchive($archive), $repositoryQueryResults->Version); return PackageCompiler::tryCompile(Functions::extractArchive($archive), $repositoryQueryResults->getVersion());
} }
catch(Exception $e) catch(Exception $e)
{ {
@ -532,12 +527,12 @@
} }
} }
if($repositoryQueryResults->Files->PackageUrl !== null) if($repositoryQueryResults->getFiles()->PackageUrl !== null)
{ {
try try
{ {
Console::outDebug(sprintf('fetching package %s from %s', $input->package, $repositoryQueryResults->Files->PackageUrl)); Console::outDebug(sprintf('fetching package %s from %s', $input->getPackage(), $repositoryQueryResults->getFiles()->PackageUrl));
return Functions::downloadGitServiceFile($repositoryQueryResults->Files->PackageUrl, $entry); return Functions::downloadGitServiceFile($repositoryQueryResults->getFiles()->PackageUrl, $entry);
} }
catch(Exception $e) catch(Exception $e)
{ {
@ -546,19 +541,19 @@
} }
} }
if($repositoryQueryResults->Files->GitHttpUrl !== null || $repositoryQueryResults->Files->GitSshUrl !== null) if($repositoryQueryResults->getFiles()->GitHttpUrl !== null || $repositoryQueryResults->getFiles()->GitSshUrl !== null)
{ {
try try
{ {
Console::outDebug(sprintf('fetching package %s from %s', $input->package, $repositoryQueryResults->Files->GitHttpUrl ?? $repositoryQueryResults->Files->GitSshUrl)); Console::outDebug(sprintf('fetching package %s from %s', $input->getPackage(), $repositoryQueryResults->getFiles()->GitHttpUrl ?? $repositoryQueryResults->getFiles()->GitSshUrl));
$git_repository = GitClient::cloneRepository($repositoryQueryResults->Files->GitHttpUrl ?? $repositoryQueryResults->Files->GitSshUrl); $git_repository = GitClient::cloneRepository($repositoryQueryResults->getFiles()->GitHttpUrl ?? $repositoryQueryResults->getFiles()->GitSshUrl);
foreach(GitClient::getTags($git_repository) as $tag) foreach(GitClient::getTags($git_repository) as $tag)
{ {
if(VersionComparator::compareVersion($tag, $repositoryQueryResults->Version) === 0) if(VersionComparator::compareVersion($tag, $repositoryQueryResults->getVersion()) === 0)
{ {
GitClient::checkout($git_repository, $tag); GitClient::checkout($git_repository, $tag);
return PackageCompiler::tryCompile($git_repository, $repositoryQueryResults->Version); return PackageCompiler::tryCompile($git_repository, $repositoryQueryResults->getVersion());
} }
} }
@ -674,7 +669,7 @@
if ($dependency->getSourceType() !== null && !$dependency_met) if ($dependency->getSourceType() !== null && !$dependency_met)
{ {
Console::outVerbose(sprintf('Installing dependency %s=%s for %s=%s', $dependency->getName(), $dependency->getVersion(), $package->assembly->getPackage(), $package->assembly->getVersion())); Console::outVerbose(sprintf('Installing dependency %s=%s for %s=%s', $dependency->getName(), $dependency->getVersion(), $package->getAssembly()->getPackage(), $package->getAssembly()->getVersion()));
switch ($dependency->getSourceType()) switch ($dependency->getSourceType())
{ {
case DependencySourceType::LOCAL: case DependencySourceType::LOCAL:
@ -989,19 +984,19 @@
*/ */
private static function initData(Package $package, InstallationPaths $paths): void private static function initData(Package $package, InstallationPaths $paths): void
{ {
Console::outVerbose(sprintf('Initializing data for %s', $package->assembly->getName())); Console::outVerbose(sprintf('Initializing data for %s', $package->getAssembly()->getName()));
// Create data files // Create data files
$dependencies = []; $dependencies = [];
foreach($package->dependencies as $dependency) foreach($package->getDependencies() as $dependency)
{ {
$dependencies[] = $dependency->toArray(true); $dependencies[] = $dependency->toArray(true);
} }
$data_files = [ $data_files = [
$paths->getDataPath() . DIRECTORY_SEPARATOR . 'assembly' => ZiProto::encode($package->assembly->toArray(true)), $paths->getDataPath() . DIRECTORY_SEPARATOR . 'assembly' => ZiProto::encode($package->getAssembly()->toArray(true)),
$paths->getDataPath() . DIRECTORY_SEPARATOR . 'ext' => ZiProto::encode($package->header->getCompilerExtension()->toArray()), $paths->getDataPath() . DIRECTORY_SEPARATOR . 'ext' => ZiProto::encode($package->getHeader()->getCompilerExtension()->toArray()),
$paths->getDataPath() . DIRECTORY_SEPARATOR . 'const' => ZiProto::encode($package->header->getRuntimeConstants()), $paths->getDataPath() . DIRECTORY_SEPARATOR . 'const' => ZiProto::encode($package->getHeader()->getRuntimeConstants()),
$paths->getDataPath() . DIRECTORY_SEPARATOR . 'dependencies' => ZiProto::encode($dependencies), $paths->getDataPath() . DIRECTORY_SEPARATOR . 'dependencies' => ZiProto::encode($dependencies),
]; ];

View file

@ -125,41 +125,41 @@
$this->project_configuration = new ProjectConfiguration(); $this->project_configuration = new ProjectConfiguration();
// Set the compiler information // Set the compiler information
$this->project_configuration->project->setCompiler($compiler); $this->project_configuration->getProject()->setCompiler($compiler);
// Set the assembly information // Set the assembly information
$this->project_configuration->assembly->setName($name); $this->project_configuration->getAssembly()->setName($name);
$this->project_configuration->assembly->setPackage($package); $this->project_configuration->getAssembly()->setPackage($package);
$this->project_configuration->assembly->setVersion('1.0.0'); $this->project_configuration->getAssembly()->setVersion('1.0.0');
$this->project_configuration->assembly->setUuid(Uuid::v1()->toRfc4122()); $this->project_configuration->getAssembly()->setUuid(Uuid::v1()->toRfc4122());
// Set the build information // Set the build information
$this->project_configuration->build->setSourcePath($src); $this->project_configuration->getBuild()->setSourcePath($src);
if($this->project_configuration->build->getSourcePath() === null) if($this->project_configuration->getBuild()->getSourcePath() === null)
{ {
$this->project_configuration->build->setSourcePath($this->project_path); $this->project_configuration->getBuild()->setSourcePath($this->project_path);
} }
$this->project_configuration->build->setDefaultConfiguration('debug'); $this->project_configuration->getBuild()->setDefaultConfiguration('debug');
// Assembly constants if the program wishes to check for this // Assembly constants if the program wishes to check for this
$this->project_configuration->build->addDefineConstant('ASSEMBLY_PACKAGE', '%ASSEMBLY.PACKAGE%'); $this->project_configuration->getBuild()->addDefineConstant('ASSEMBLY_PACKAGE', '%ASSEMBLY.PACKAGE%');
$this->project_configuration->build->addDefineConstant('ASSEMBLY_VERSION', '%ASSEMBLY.VERSION%'); $this->project_configuration->getBuild()->addDefineConstant('ASSEMBLY_VERSION', '%ASSEMBLY.VERSION%');
$this->project_configuration->build->addDefineConstant('ASSEMBLY_UID', '%ASSEMBLY.UID%'); $this->project_configuration->getBuild()->addDefineConstant('ASSEMBLY_UID', '%ASSEMBLY.UID%');
// Generate configurations // Generate configurations
$debug_configuration = new ProjectConfiguration\Build\BuildConfiguration(); $debug_configuration = new ProjectConfiguration\Build\BuildConfiguration();
$debug_configuration->setName('debug'); $debug_configuration->setName('debug');
$debug_configuration->setOutputPath('build/debug'); $debug_configuration->setOutputPath('build/debug');
$debug_configuration->setDefinedConstant('DEBUG', '1'); // Debugging constant if the program wishes to check for this $debug_configuration->setDefinedConstant('DEBUG', '1'); // Debugging constant if the program wishes to check for this
$this->project_configuration->build->addBuildConfiguration($debug_configuration); $this->project_configuration->getBuild()->addBuildConfiguration($debug_configuration);
$release_configuration = new ProjectConfiguration\Build\BuildConfiguration(); $release_configuration = new ProjectConfiguration\Build\BuildConfiguration();
$release_configuration->setName('release'); $release_configuration->setName('release');
$release_configuration->setOutputPath('build/release'); $release_configuration->setOutputPath('build/release');
$release_configuration->setDefinedConstant('DEBUG', '0'); // Debugging constant if the program wishes to check for this $release_configuration->setDefinedConstant('DEBUG', '0'); // Debugging constant if the program wishes to check for this
$this->project_configuration->build->addBuildConfiguration($release_configuration); $this->project_configuration->getBuild()->addBuildConfiguration($release_configuration);
// Finally, create project.json // Finally, create project.json
$this->project_configuration->toFile($this->project_path . DIRECTORY_SEPARATOR . 'project.json'); $this->project_configuration->toFile($this->project_path . DIRECTORY_SEPARATOR . 'project.json');
@ -184,8 +184,8 @@
{ {
if ( if (
$option === InitializeProjectOptions::CREATE_SOURCE_DIRECTORY && $option === InitializeProjectOptions::CREATE_SOURCE_DIRECTORY &&
!file_exists($this->project_configuration->build->getSourcePath()) && !file_exists($this->project_configuration->getBuild()->getSourcePath()) &&
!mkdir($concurrentDirectory = $this->project_configuration->build->getSourcePath()) && !mkdir($concurrentDirectory = $this->project_configuration->getBuild()->getSourcePath()) &&
!is_dir($concurrentDirectory) !is_dir($concurrentDirectory)
) )
{ {

View file

@ -1,24 +1,24 @@
<?php <?php
/* /*
* Copyright (c) Nosial 2022-2023, all rights reserved. * 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 * 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 * 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 * 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 * Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions: * conditions:
* *
* The above copyright notice and this permission notice shall be included in all copies or substantial portions * The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software. * of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * 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 * 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 * 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 * 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 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
* *
*/ */
/** @noinspection PhpMissingFieldTypeInspection */ /** @noinspection PhpMissingFieldTypeInspection */
@ -31,7 +31,7 @@
* *
* @var HttpResponse * @var HttpResponse
*/ */
private $httpResponse; private $http_response;
/** /**
* The Unix Timestamp of when the cache becomes invalid * The Unix Timestamp of when the cache becomes invalid
@ -43,12 +43,12 @@
/** /**
* Creates a new HttpResponseCache * Creates a new HttpResponseCache
* *
* @param HttpResponse $httpResponse * @param HttpResponse $http_response
* @param int $ttl * @param int $ttl
*/ */
public function __construct(HttpResponse $httpResponse, int $ttl) public function __construct(HttpResponse $http_response, int $ttl)
{ {
$this->httpResponse = $httpResponse; $this->http_response = $http_response;
$this->ttl = $ttl; $this->ttl = $ttl;
} }
@ -59,7 +59,7 @@
*/ */
public function getHttpResponse(): HttpResponse public function getHttpResponse(): HttpResponse
{ {
return $this->httpResponse; return $this->http_response;
} }
/** /**

View file

@ -1,24 +1,24 @@
<?php <?php
/* /*
* Copyright (c) Nosial 2022-2023, all rights reserved. * 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 * 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 * 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 * 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 * Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions: * conditions:
* *
* The above copyright notice and this permission notice shall be included in all copies or substantial portions * The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software. * of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * 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 * 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 * 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 * 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 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
* *
*/ */
/** @noinspection PhpMissingFieldTypeInspection */ /** @noinspection PhpMissingFieldTypeInspection */
@ -31,14 +31,14 @@
* *
* @var string * @var string
*/ */
private $InstallationPath; private $installation_path;
/** /**
* @param string $installation_path * @param string $installation_path
*/ */
public function __construct(string $installation_path) public function __construct(string $installation_path)
{ {
$this->InstallationPath = $installation_path; $this->installation_path = $installation_path;
} }
/** /**
@ -48,7 +48,7 @@
*/ */
public function getDataPath(): string public function getDataPath(): string
{ {
return $this->InstallationPath . DIRECTORY_SEPARATOR . 'ncc'; return $this->installation_path . DIRECTORY_SEPARATOR . 'ncc';
} }
/** /**
@ -58,7 +58,7 @@
*/ */
public function getSourcePath(): string public function getSourcePath(): string
{ {
return $this->InstallationPath . DIRECTORY_SEPARATOR . 'src'; return $this->installation_path . DIRECTORY_SEPARATOR . 'src';
} }
/** /**
@ -68,14 +68,14 @@
*/ */
public function getBinPath(): string public function getBinPath(): string
{ {
return $this->InstallationPath . DIRECTORY_SEPARATOR . 'bin'; return $this->installation_path . DIRECTORY_SEPARATOR . 'bin';
} }
/** /**
* @return string * @return string
*/ */
public function getInstallationPath(): string public function getInstallationpath(): string
{ {
return $this->InstallationPath; return $this->installation_path;
} }
} }

View file

@ -1,150 +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;
class NccUpdateInformation
{
/**
* The version number
*
* @var string|null
*/
public $Version;
/**
* The URL source for where the update can be obtained
*
* @var string|null
*/
public $DownloadSource;
/**
* Indicates if authentication is required or not to download from the source
*
* @var bool
*/
public $AuthenticationRequired;
/**
* The username to use for the authentication if provided by the server
*
* @var string|null
*/
public $AuthenticationUsername;
/**
* The password to use for the authentication if provided by the server
*
* @var string
*/
public $AuthenticationPassword;
/**
* Flags for the build
*
* @var string|null
*/
public $Flags;
/**
* A description explaining what the update consists of
*
* @var string|null
*/
public $UpdateDescription;
/**
* An array of changes that has been made for the update
*
* @var array|null
*/
public $ChangeLog;
/**
* Public Constructor
*/
public function __construct()
{
$this->AuthenticationRequired = false;
$this->Flags = [];
$this->ChangeLog = [];
}
/**
* Returns an array representation of the object
*
* @return array
*/
public function toArray(): array
{
return [
'version' => $this->Version,
'download_source' => $this->DownloadSource,
'authentication_required' => $this->AuthenticationRequired,
'authentication_username' => $this->AuthenticationUsername,
'authentication_password' => $this->AuthenticationPassword,
'flags' => $this->Flags,
'update_description' => $this->UpdateDescription,
'changelog' => $this->ChangeLog
];
}
/**
* Constructs an object from an array representation
*
* @param array $data
* @return NccUpdateInformation
*/
public static function fromArray(array $data): NccUpdateInformation
{
$NccUpdateInformationObject = new NccUpdateInformation();
if(isset($data['version']))
$NccUpdateInformationObject->Version = $data['version'];
if(isset($data['download_source']))
$NccUpdateInformationObject->DownloadSource = $data['download_source'];
if(isset($data['authentication_required']))
$NccUpdateInformationObject->AuthenticationRequired = $data['authentication_required'];
if(isset($data['authentication_username']))
$NccUpdateInformationObject->AuthenticationUsername = $data['authentication_username'];
if(isset($data['authentication_password']))
$NccUpdateInformationObject->AuthenticationPassword = $data['authentication_password'];
if(isset($data['flags']))
$NccUpdateInformationObject->Flags = $data['flags'];
if(isset($data['update_description']))
$NccUpdateInformationObject->UpdateDescription = $data['update_description'];
if(isset($data['changelog']))
$NccUpdateInformationObject->ChangeLog = $data['changelog'];
return $NccUpdateInformationObject;
}
}

View file

@ -1,60 +1,61 @@
<?php <?php
/* /*
* Copyright (c) Nosial 2022-2023, all rights reserved. * 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 * 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 * 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 * 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 * Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions: * conditions:
* *
* The above copyright notice and this permission notice shall be included in all copies or substantial portions * The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software. * of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * 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 * 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 * 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 * 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 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
* *
*/ */
/** @noinspection PhpMissingFieldTypeInspection */ /** @noinspection PhpMissingFieldTypeInspection */
namespace ncc\Objects; namespace ncc\Objects;
use ncc\Interfaces\SerializableObjectInterface;
use ncc\Objects\NccVersionInformation\Component; use ncc\Objects\NccVersionInformation\Component;
class NccVersionInformation class NccVersionInformation implements SerializableObjectInterface
{ {
/** /**
* The current version of the build * The current version of the build
* *
* @var string|null * @var string|null
*/ */
public $Version; private $version;
/** /**
* The branch of the version * The branch of the version
* *
* @var string|null * @var string|null
*/ */
public $Branch; private $branch;
/** /**
* Flags for the current build * Flags for the current build
* *
* @var array|null * @var array|null
*/ */
public $Flags; private $flags;
/** /**
* An array of components that ncc uses and comes pre-built with * An array of components that ncc uses and comes pre-built with
* *
* @var Component[] * @var Component[]
*/ */
public $Components; private $components;
/** /**
* The remote source for where NCC can check for available updates and how to * The remote source for where NCC can check for available updates and how to
@ -62,7 +63,87 @@
* *
* @var string|null * @var string|null
*/ */
public $UpdateSource; private $update_source;
/**
* @return string|null
*/
public function getVersion(): ?string
{
return $this->version;
}
/**
* @param string|null $version
*/
public function setVersion(?string $version): void
{
$this->version = $version;
}
/**
* @return string|null
*/
public function getBranch(): ?string
{
return $this->branch;
}
/**
* @param string|null $branch
*/
public function setBranch(?string $branch): void
{
$this->branch = $branch;
}
/**
* @return array|null
*/
public function getFlags(): ?array
{
return $this->flags;
}
/**
* @param array|null $flags
*/
public function setFlags(?array $flags): void
{
$this->flags = $flags;
}
/**
* @return Component[]
*/
public function getComponents(): array
{
return $this->components;
}
/**
* @param Component[] $components
*/
public function setComponents(array $components): void
{
$this->components = $components;
}
/**
* @return string|null
*/
public function getUpdateSource(): ?string
{
return $this->update_source;
}
/**
* @param string|null $update_source
*/
public function setUpdateSource(?string $update_source): void
{
$this->update_source = $update_source;
}
/** /**
* Returns an array representation of the object * Returns an array representation of the object
@ -73,16 +154,16 @@
{ {
$components = []; $components = [];
foreach($this->Components as $component) foreach($this->components as $component)
{ {
$components[] = $component->toArray(); $components[] = $component->toArray();
} }
return [ return [
'version' => $this->Version, 'version' => $this->version,
'branch' => $this->Branch, 'branch' => $this->branch,
'components' =>$components, 'components' =>$components,
'flags' => $this->Flags 'flags' => $this->flags
]; ];
} }
@ -94,25 +175,31 @@
*/ */
public static function fromArray(array $data): NccVersionInformation public static function fromArray(array $data): NccVersionInformation
{ {
$NccVersionInformationObject = new NccVersionInformation(); $object = new self();
if(isset($data['flags'])) if(isset($data['flags']))
$NccVersionInformationObject->Flags = $data['flags']; {
$object->flags = $data['flags'];
}
if(isset($data['branch'])) if(isset($data['branch']))
$NccVersionInformationObject->Branch = $data['branch']; {
$object->branch = $data['branch'];
}
if(isset($data['components'])) if(isset($data['components']))
{ {
foreach($data['components'] as $datum) foreach($data['components'] as $datum)
{ {
$NccVersionInformationObject->Components[] = Component::fromArray($datum); $object->components[] = Component::fromArray($datum);
} }
} }
if(isset($data['version'])) if(isset($data['version']))
$NccVersionInformationObject->Version = $data['version']; {
$object->version = $data['version'];
}
return $NccVersionInformationObject; return $object;
} }
} }

View file

@ -51,63 +51,63 @@
* *
* @var MagicBytes * @var MagicBytes
*/ */
public $magic_bytes; private $magic_bytes;
/** /**
* The true header of the package * The true header of the package
* *
* @var Header * @var Header
*/ */
public $header; private $header;
/** /**
* The assembly object of the package * The assembly object of the package
* *
* @var Assembly * @var Assembly
*/ */
public $assembly; private $assembly;
/** /**
* An array of dependencies that the package depends on * An array of dependencies that the package depends on
* *
* @var Dependency[] * @var Dependency[]
*/ */
public $dependencies; private $dependencies;
/** /**
* The Main Execution Policy object for the package if the package is an executable package. * The Main Execution Policy object for the package if the package is an executable package.
* *
* @var string|null * @var string|null
*/ */
public $main_execution_policy; private $main_execution_policy;
/** /**
* The installer object that is used to install the package if the package is install-able * The installer object that is used to install the package if the package is install-able
* *
* @var Installer|null * @var Installer|null
*/ */
public $installer; private $installer;
/** /**
* An array of execution units defined in the package * An array of execution units defined in the package
* *
* @var ExecutionUnit[] * @var ExecutionUnit[]
*/ */
public $execution_units; private $execution_units;
/** /**
* An array of resources that the package depends on * An array of resources that the package depends on
* *
* @var Resource[] * @var Resource[]
*/ */
public $resources; private $resources;
/** /**
* An array of components for the package * An array of components for the package
* *
* @var Component[] * @var Component[]
*/ */
public $components; private $components;
/** /**
* Public Constructor * Public Constructor
@ -161,6 +161,218 @@
} }
} }
/**
* @return MagicBytes
*/
public function getMagicBytes(): MagicBytes
{
return $this->magic_bytes;
}
/**
* @param MagicBytes $magic_bytes
*/
public function setMagicBytes(MagicBytes $magic_bytes): void
{
$this->magic_bytes = $magic_bytes;
}
/**
* @return Header
*/
public function getHeader(): Header
{
return $this->header;
}
/**
* @param Header $header
*/
public function setHeader(Header $header): void
{
$this->header = $header;
}
/**
* @return Assembly
*/
public function getAssembly(): Assembly
{
return $this->assembly;
}
/**
* @param Assembly $assembly
*/
public function setAssembly(Assembly $assembly): void
{
$this->assembly = $assembly;
}
/**
* @return array|Dependency[]
*/
public function getDependencies(): array
{
return $this->dependencies;
}
/**
* @param array|Dependency[] $dependencies
*/
public function setDependencies(array $dependencies): void
{
$this->dependencies = $dependencies;
}
/**
* @return string|null
*/
public function getMainExecutionPolicy(): ?string
{
return $this->main_execution_policy;
}
/**
* @param string|null $main_execution_policy
*/
public function setMainExecutionPolicy(?string $main_execution_policy): void
{
$this->main_execution_policy = $main_execution_policy;
}
/**
* @return Installer|null
*/
public function getInstaller(): ?Installer
{
return $this->installer;
}
/**
* @param Installer|null $installer
*/
public function setInstaller(?Installer $installer): void
{
$this->installer = $installer;
}
/**
* @return array|ExecutionUnit[]
*/
public function getExecutionUnits(): array
{
return $this->execution_units;
}
/**
* @param array|ExecutionUnit[] $execution_units
*/
public function setExecutionUnits(array $execution_units): void
{
$this->execution_units = $execution_units;
}
/**
* @return array|Resource[]
*/
public function getResources(): array
{
return $this->resources;
}
/**
* @param array|Resource[] $resources
*/
public function setResources(array $resources): void
{
$this->resources = $resources;
}
/**
* @param Resource $resource
* @return void
*/
public function addResource(Resource $resource): void
{
foreach($this->resources as $res)
{
if($res->getName() === $resource->getName())
{
$this->removeResource($res->getName());
break;
}
}
$this->resources[] = $resource;
}
/**
* @param string $name
* @return void
*/
private function removeResource(string $name): void
{
foreach($this->resources as $key => $res)
{
if($res->getName() === $name)
{
unset($this->resources[$key]);
return;
}
}
}
/**
* @return array|Component[]
*/
public function getComponents(): array
{
return $this->components;
}
/**
* @param array|Component[] $components
*/
public function setComponents(array $components): void
{
$this->components = $components;
}
/**
* @param Component $component
* @return void
*/
public function addComponent(Component $component): void
{
foreach($this->components as $comp)
{
if($comp->getName() === $component->getName())
{
$this->removeComponent($comp->getName());
break;
}
}
$this->components[] = $component;
}
/**
* @param string $name
* @return void
*/
public function removeComponent(string $name): void
{
foreach($this->components as $key => $comp)
{
if($comp->getName() === $name)
{
unset($this->components[$key]);
return;
}
}
}
/** /**
* Validates the package object and returns True if the package contains the correct information * Validates the package object and returns True if the package contains the correct information
* *
@ -248,7 +460,7 @@
*/ */
public static function load(string $path): Package public static function load(string $path): Package
{ {
if(!file_exists($path) || !is_file($path) || !is_readable($path)) if(!is_file($path) || !is_readable($path))
{ {
throw new PathNotFoundException($path); throw new PathNotFoundException($path);
} }
@ -265,7 +477,7 @@
// Extract the package structure version // Extract the package structure version
$package_structure_version = strtoupper(substr($header, 11, 3)); $package_structure_version = strtoupper(substr($header, 11, 3));
if(!in_array($package_structure_version, PackageStructureVersions::ALL)) if(!in_array($package_structure_version, PackageStructureVersions::ALL, true))
{ {
throw new PackageException(sprintf("The package '%s' does not appear to be a valid NCC Package (Unsupported Package Structure Version)", $path)); throw new PackageException(sprintf("The package '%s' does not appear to be a valid NCC Package (Unsupported Package Structure Version)", $path));
} }

View file

@ -27,40 +27,41 @@
use ncc\Enums\Versions; use ncc\Enums\Versions;
use ncc\Exceptions\ConfigurationException; use ncc\Exceptions\ConfigurationException;
use ncc\Exceptions\IOException; use ncc\Exceptions\IOException;
use ncc\Interfaces\BytecodeObjectInterface;
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;
class PackageLock class PackageLock implements BytecodeObjectInterface
{ {
/** /**
* The version of package lock file structure * The version of package lock file structure
* *
* @var string * @var string
*/ */
public $PackageLockVersion; private $package_lock_version;
/** /**
* The Unix Timestamp for when this package lock file was last updated * The Unix Timestamp for when this package lock file was last updated
* *
* @var int * @var int
*/ */
public $LastUpdatedTimestamp; private $last_updated_timestamp;
/** /**
* An array of installed packages in the PackageLock file * An array of installed packages in the PackageLock file
* *
* @var PackageEntry[] * @var PackageEntry[]
*/ */
public $Packages; private $packages;
/** /**
* Public Constructor * Public Constructor
*/ */
public function __construct() public function __construct()
{ {
$this->PackageLockVersion = Versions::PACKAGE_LOCK_VERSION; $this->package_lock_version = Versions::PACKAGE_LOCK_VERSION;
$this->Packages = []; $this->packages = [];
} }
/** /**
@ -70,8 +71,8 @@
*/ */
private function update(): void private function update(): void
{ {
$this->PackageLockVersion = Versions::PACKAGE_LOCK_VERSION; $this->package_lock_version = Versions::PACKAGE_LOCK_VERSION;
$this->LastUpdatedTimestamp = time(); $this->last_updated_timestamp = time();
} }
/** /**
@ -82,22 +83,22 @@
*/ */
public function addPackage(Package $package, string $install_path): void public function addPackage(Package $package, string $install_path): void
{ {
Console::outVerbose("Adding package {$package->assembly->getPackage()} to package lock file"); Console::outVerbose("Adding package {$package->getAssembly()->getPackage()} to package lock file");
if(!isset($this->Packages[$package->assembly->getPackage()])) if(!isset($this->packages[$package->getAssembly()->getPackage()]))
{ {
$package_entry = new PackageEntry(); $package_entry = new PackageEntry();
$package_entry->addVersion($package, $install_path, true); $package_entry->addVersion($package, $install_path, true);
$package_entry->setName($package->assembly->getPackage()); $package_entry->setName($package->getAssembly()->getPackage());
$package_entry->setUpdateSource($package->header->getUpdateSource()); $package_entry->setUpdateSource($package->getHeader()->getUpdateSource());
$this->Packages[$package->assembly->getPackage()] = $package_entry; $this->packages[$package->getAssembly()->getPackage()] = $package_entry;
$this->update(); $this->update();
return; return;
} }
$this->Packages[$package->assembly->getPackage()]->setUpdateSource($package->header->getUpdateSource()); $this->packages[$package->getAssembly()->getPackage()]->setUpdateSource($package->getHeader()->getUpdateSource());
$this->Packages[$package->assembly->getPackage()]->addVersion($package, $install_path, true); $this->packages[$package->getAssembly()->getPackage()]->addVersion($package, $install_path, true);
$this->update(); $this->update();
} }
@ -112,14 +113,14 @@
{ {
Console::outVerbose(sprintf('Removing package %s version %s from package lock file', $package, $version)); Console::outVerbose(sprintf('Removing package %s version %s from package lock file', $package, $version));
if(isset($this->Packages[$package])) if(isset($this->packages[$package]))
{ {
$r = $this->Packages[$package]->removeVersion($version); $r = $this->packages[$package]->removeVersion($version);
// Remove the entire package entry if there's no installed versions // Remove the entire package entry if there's no installed versions
if($r && $this->Packages[$package]->getLatestVersion() === null) if($r && $this->packages[$package]->getLatestVersion() === null)
{ {
unset($this->Packages[$package]); unset($this->packages[$package]);
} }
$this->update(); $this->update();
@ -139,9 +140,9 @@
public function removePackage(string $package): bool public function removePackage(string $package): bool
{ {
Console::outVerbose(sprintf('Removing package %s from package lock file', $package)); Console::outVerbose(sprintf('Removing package %s from package lock file', $package));
if(isset($this->Packages[$package])) if(isset($this->packages[$package]))
{ {
unset($this->Packages[$package]); unset($this->packages[$package]);
$this->update(); $this->update();
return true; return true;
} }
@ -158,7 +159,7 @@
public function getPackage(string $package): ?PackageEntry public function getPackage(string $package): ?PackageEntry
{ {
Console::outDebug(sprintf('getting package %s from package lock file', $package)); Console::outDebug(sprintf('getting package %s from package lock file', $package));
return $this->Packages[$package] ?? null; return $this->packages[$package] ?? null;
} }
/** /**
@ -207,7 +208,7 @@
{ {
$results = []; $results = [];
foreach($this->Packages as $package => $entry) foreach($this->packages as $package => $entry)
{ {
$results[$package] = $entry->getVersions(); $results[$package] = $entry->getVersions();
} }
@ -215,6 +216,38 @@
return $results; return $results;
} }
/**
* @return string
*/
public function getPackageLockVersion(): string
{
return $this->package_lock_version;
}
/**
* @param string $package_lock_version
*/
public function setPackageLockVersion(string $package_lock_version): void
{
$this->package_lock_version = $package_lock_version;
}
/**
* @return int
*/
public function getLastUpdatedTimestamp(): int
{
return $this->last_updated_timestamp;
}
/**
* @param int $last_updated_timestamp
*/
public function setLastUpdatedTimestamp(int $last_updated_timestamp): void
{
$this->last_updated_timestamp = $last_updated_timestamp;
}
/** /**
* Returns an array representation of the object * Returns an array representation of the object
* *
@ -224,14 +257,14 @@
public function toArray(bool $bytecode=false): array public function toArray(bool $bytecode=false): array
{ {
$package_entries = []; $package_entries = [];
foreach($this->Packages as $entry) foreach($this->packages as $entry)
{ {
$package_entries[] = $entry->toArray($bytecode); $package_entries[] = $entry->toArray($bytecode);
} }
return [ return [
($bytecode ? Functions::cbc('package_lock_version') : 'package_lock_version') => $this->PackageLockVersion, ($bytecode ? Functions::cbc('package_lock_version') : 'package_lock_version') => $this->package_lock_version,
($bytecode ? Functions::cbc('last_updated_timestamp') : 'last_updated_timestamp') => $this->LastUpdatedTimestamp, ($bytecode ? Functions::cbc('last_updated_timestamp') : 'last_updated_timestamp') => $this->last_updated_timestamp,
($bytecode ? Functions::cbc('packages') : 'packages') => $package_entries ($bytecode ? Functions::cbc('packages') : 'packages') => $package_entries
]; ];
} }
@ -252,12 +285,12 @@
foreach($packages as $_datum) foreach($packages as $_datum)
{ {
$entry = PackageEntry::fromArray($_datum); $entry = PackageEntry::fromArray($_datum);
$object->Packages[$entry->getName()] = $entry; $object->packages[$entry->getName()] = $entry;
} }
} }
$object->PackageLockVersion = Functions::array_bc($data, 'package_lock_version'); $object->package_lock_version = Functions::array_bc($data, 'package_lock_version');
$object->LastUpdatedTimestamp = Functions::array_bc($data, 'last_updated_timestamp'); $object->last_updated_timestamp = Functions::array_bc($data, 'last_updated_timestamp');
return $object; return $object;
} }

View file

@ -154,14 +154,14 @@
{ {
try try
{ {
if ($this->getVersion($package->assembly->getVersion()) !== null) if ($this->getVersion($package->getAssembly()->getVersion()) !== null)
{ {
if(!$overwrite) if(!$overwrite)
{ {
return false; return false;
} }
$this->removeVersion($package->assembly->getVersion()); $this->removeVersion($package->getAssembly()->getVersion());
} }
} }
catch (IOException $e) catch (IOException $e)
@ -170,10 +170,10 @@
} }
$version = new VersionEntry(); $version = new VersionEntry();
$version->setVersion($package->assembly->getVersion()); $version->setVersion($package->getAssembly()->getVersion());
$version->setCompiler($package->header->getCompilerExtension()); $version->setCompiler($package->getHeader()->getCompilerExtension());
$version->setExecutionUnits($package->execution_units); $version->setExecutionUnits($package->getExecutionUnits());
$version->main_execution_policy = $package->main_execution_policy; $version->main_execution_policy = $package->getMainExecutionPolicy();
$version->location = $install_path; $version->location = $install_path;
foreach($version->getExecutionUnits() as $unit) foreach($version->getExecutionUnits() as $unit)
@ -181,7 +181,7 @@
$unit->setData(null); $unit->setData(null);
} }
foreach($package->dependencies as $dependency) foreach($package->getDependencies() as $dependency)
{ {
$version->addDependency(new DependencyEntry($dependency)); $version->addDependency(new DependencyEntry($dependency));
} }

View file

@ -1,159 +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;
class PhpConfiguration
{
/**
* The Configuration name
*
* @var string|null
*/
private $Name;
/**
* The default value that's globally set
*
* @var string
*/
public $GlobalValue;
/**
* The local value that has been modified by the program
*
* @var string
*/
public $LocalValue;
/**
* The access level for modifying this configuration value
*
* @var string
*/
public $Access;
/**
* Sets a value to this Php Configuration
*
* @param string $value
* @return bool
* @noinspection PhpUnused
*/
public function setValue(string $value): bool
{
if($this->Name == null)
{
return false;
}
ini_set($this->Name, $value);
return true;
}
/**
* Returns the current value set for this configuration
*
* @return string
* @noinspection PhpUnused
*/
public function getValue(): string
{
return $this->LocalValue;
}
/**
* Resets the configuration value to its default state
*
* @return bool
* @noinspection PhpUnused
*/
public function resetValue(): bool
{
if($this->Name == null)
{
return false;
}
ini_restore($this->Name);
return true;
}
/**
* Returns an array representation of the object
*
* @return array
* @noinspection PhpArrayShapeAttributeCanBeAddedInspection
*/
public function toArray(): array
{
return [
'global_value' => $this->GlobalValue,
'local_value' => $this->LocalValue,
'access' => $this->Access
];
}
/**
* Constructs the object from an array representation
*
* @param array $data
* @param string|null $name
* @return PhpConfiguration
*/
public static function fromArray(array $data, ?string $name=null): PhpConfiguration
{
$PhpConfiguratoinObject = new PhpConfiguration();
if($name !== null)
{
$PhpConfiguratoinObject->Name = $name;
}
if(isset($data['global_value']))
{
$PhpConfiguratoinObject->GlobalValue = $data['global_value'];
}
if(isset($data['local_value']))
{
$PhpConfiguratoinObject->LocalValue = $data['local_value'];
}
if(isset($data['access']))
{
$PhpConfiguratoinObject->Access = $data['access'];
}
return $PhpConfiguratoinObject;
}
/**
* @return string|null
*/
public function getName(): ?string
{
return $this->Name;
}
}

View file

@ -41,7 +41,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class ProjectConfiguration implements BytecodeObjectInterface class ProjectConfiguration implements BytecodeObjectInterface
{ {
@ -50,35 +50,35 @@
* *
* @var Project * @var Project
*/ */
public $project; private $project;
/** /**
* Assembly information for the build output * Assembly information for the build output
* *
* @var Assembly * @var Assembly
*/ */
public $assembly; private $assembly;
/** /**
* An array of execution policies * An array of execution policies
* *
* @var ExecutionPolicy[] * @var ExecutionPolicy[]
*/ */
public $execution_policies; private $execution_policies;
/** /**
* Execution Policies to execute by the NCC installer * Execution Policies to execute by the NCC installer
* *
* @var Installer|null * @var Installer|null
*/ */
public $installer; private $installer;
/** /**
* Build configuration for the project * Build configuration for the project
* *
* @var Build * @var Build
*/ */
public $build; private $build;
/** /**
* Public Constructor * Public Constructor
@ -91,6 +91,86 @@
$this->build = new Build(); $this->build = new Build();
} }
/**
* @return Project
*/
public function getProject(): Project
{
return $this->project;
}
/**
* @param Project $project
*/
public function setProject(Project $project): void
{
$this->project = $project;
}
/**
* @return Assembly
*/
public function getAssembly(): Assembly
{
return $this->assembly;
}
/**
* @param Assembly $assembly
*/
public function setAssembly(Assembly $assembly): void
{
$this->assembly = $assembly;
}
/**
* @return array|ExecutionPolicy[]
*/
public function getExecutionPolicies(): array
{
return $this->execution_policies;
}
/**
* @param array|ExecutionPolicy[] $execution_policies
*/
public function setExecutionPolicies(array $execution_policies): void
{
$this->execution_policies = $execution_policies;
}
/**
* @return Installer|null
*/
public function getInstaller(): ?Installer
{
return $this->installer;
}
/**
* @param Installer|null $installer
*/
public function setInstaller(?Installer $installer): void
{
$this->installer = $installer;
}
/**
* @return Build
*/
public function getBuild(): Build
{
return $this->build;
}
/**
* @param Build $build
*/
public function setBuild(Build $build): void
{
$this->build = $build;
}
/** /**
* Validates the object for any errors * Validates the object for any errors
* *
@ -309,45 +389,43 @@
foreach($required_policies as $policy) foreach($required_policies as $policy)
{ {
$execution_policy = $this->getExecutionPolicy($policy); $execution_policy = $this->getExecutionPolicy($policy);
if($execution_policy?->getExitHandlers() !== null)
if($execution_policy?->getExitHandlers()->getSuccess()?->getRun() !== null)
{ {
if($execution_policy?->getExitHandlers()->getSuccess()?->getRun() !== null) if(!in_array($execution_policy?->getExitHandlers()->getSuccess()?->getRun(), $defined_polices, true))
{ {
if(!in_array($execution_policy?->getExitHandlers()->getSuccess()?->getRun(), $defined_polices, true)) throw new ConfigurationException('The execution policy \'' . $execution_policy?->getName() . '\' Success exit handler points to a undefined execution policy \'' . $execution_policy?->getExitHandlers()->getSuccess()?->getRun() . '\'');
{
throw new ConfigurationException('The execution policy \'' . $execution_policy?->getName() . '\' Success exit handler points to a undefined execution policy \'' . $execution_policy?->getExitHandlers()->getSuccess()?->getRun() . '\'');
}
if(!in_array($execution_policy?->getExitHandlers()->getSuccess()?->getRun(), $required_policies, true))
{
$required_policies[] = $execution_policy?->getExitHandlers()->getSuccess()?->getRun();
}
} }
if($execution_policy?->getExitHandlers()->getWarning()?->getRun() !== null) if(!in_array($execution_policy?->getExitHandlers()->getSuccess()?->getRun(), $required_policies, true))
{ {
if(!in_array($execution_policy?->getExitHandlers()->getWarning()?->getRun(), $defined_polices, true)) $required_policies[] = $execution_policy?->getExitHandlers()->getSuccess()?->getRun();
{ }
throw new ConfigurationException('The execution policy \'' . $execution_policy?->getName() . '\' Warning exit handler points to a undefined execution policy \'' . $execution_policy?->getExitHandlers()->getWarning()?->getRun() . '\''); }
}
if(!in_array($execution_policy?->getExitHandlers()->getWarning()?->getRun(), $required_policies, true)) if($execution_policy?->getExitHandlers()->getWarning()?->getRun() !== null)
{ {
$required_policies[] = $execution_policy?->getExitHandlers()->getWarning()?->getRun(); if(!in_array($execution_policy?->getExitHandlers()->getWarning()?->getRun(), $defined_polices, true))
} {
throw new ConfigurationException('The execution policy \'' . $execution_policy?->getName() . '\' Warning exit handler points to a undefined execution policy \'' . $execution_policy?->getExitHandlers()->getWarning()?->getRun() . '\'');
} }
if($execution_policy?->getExitHandlers()->getError()?->getRun() !== null) if(!in_array($execution_policy?->getExitHandlers()->getWarning()?->getRun(), $required_policies, true))
{ {
if(!in_array($execution_policy?->getExitHandlers()->getError()?->getRun(), $defined_polices, true)) $required_policies[] = $execution_policy?->getExitHandlers()->getWarning()?->getRun();
{ }
throw new ConfigurationException('The execution policy \'' . $execution_policy?->getName() . '\' Error exit handler points to a undefined execution policy \'' . $execution_policy?->getExitHandlers()->getError()?->getRun() . '\''); }
}
if(!in_array($execution_policy?->getExitHandlers()->getError()?->getRun(), $required_policies, true)) if($execution_policy?->getExitHandlers()->getError()?->getRun() !== null)
{ {
$required_policies[] = $execution_policy?->getExitHandlers()->getError()?->getRun(); if(!in_array($execution_policy?->getExitHandlers()->getError()?->getRun(), $defined_polices, true))
} {
throw new ConfigurationException('The execution policy \'' . $execution_policy?->getName() . '\' Error exit handler points to a undefined execution policy \'' . $execution_policy?->getExitHandlers()->getError()?->getRun() . '\'');
}
if(!in_array($execution_policy?->getExitHandlers()->getError()?->getRun(), $required_policies, true))
{
$required_policies[] = $execution_policy?->getExitHandlers()->getError()?->getRun();
} }
} }

View file

@ -32,7 +32,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class Assembly implements BytecodeObjectInterface class Assembly implements BytecodeObjectInterface
{ {

View file

@ -33,7 +33,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class Build implements BytecodeObjectInterface class Build implements BytecodeObjectInterface
{ {

View file

@ -32,7 +32,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class BuildConfiguration implements BytecodeObjectInterface class BuildConfiguration implements BytecodeObjectInterface
{ {

View file

@ -35,7 +35,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class Compiler implements BytecodeObjectInterface class Compiler implements BytecodeObjectInterface
{ {

View file

@ -31,7 +31,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class Dependency implements BytecodeObjectInterface class Dependency implements BytecodeObjectInterface
{ {

View file

@ -31,7 +31,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class Project implements BytecodeObjectInterface class Project implements BytecodeObjectInterface
{ {

View file

@ -1,63 +1,67 @@
<?php /* <?php
* Copyright (c) 2023.
*
* 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.
*
*/ /*
* Copyright (c) Nosial 2022-2023.
*
* 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.
*
*/ /*
* 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; /*
* Copyright (c) 2023.
*
* 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.
*
*/ /*
* Copyright (c) Nosial 2022-2023.
*
* 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.
*
*/ /*
* 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;
class ProjectDetectionResults class ProjectDetectionResults
{ {
@ -66,13 +70,46 @@ namespace ncc\Objects;
* *
* @var string * @var string
*/ */
public $ProjectPath; private $project_path;
/** /**
* The type of project that was detected * The type of project that was detected
* *
* @see ProjectType * @see project_type
* @var string * @var string
*/ */
public $ProjectType; private $project_type;
/**
* @return string
*/
public function getProjectPath(): string
{
return $this->project_path;
}
/**
* @param string $project_path
*/
public function setProjectPath(string $project_path): void
{
$this->project_path = $project_path;
}
/**
* @return string
*/
public function getProjectType(): string
{
return $this->project_type;
}
/**
* @param string $project_type
*/
public function setProjectType(string $project_type): void
{
$this->project_type = $project_type;
}
} }

View file

@ -1,24 +1,24 @@
<?php <?php
/* /*
* Copyright (c) Nosial 2022-2023, all rights reserved. * 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 * 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 * 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 * 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 * Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions: * conditions:
* *
* The above copyright notice and this permission notice shall be included in all copies or substantial portions * The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software. * of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * 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 * 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 * 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 * 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 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
* *
*/ */
/** @noinspection PhpMissingFieldTypeInspection */ /** @noinspection PhpMissingFieldTypeInspection */
@ -32,27 +32,27 @@
/** /**
* @var string * @var string
*/ */
public $vendor; private $vendor;
/** /**
* @var string * @var string
*/ */
public $package; private $package;
/** /**
* @var string|null * @var string|null
*/ */
public $version; private $version;
/** /**
* @var string|null * @var string|null
*/ */
public $branch; private $branch;
/** /**
* @var string * @var string
*/ */
public $source; private $source;
/** /**
* Public Constructor & String Parser * Public Constructor & String Parser
@ -80,6 +80,86 @@
} }
} }
/**
* @return string
*/
public function getVendor(): string
{
return $this->vendor;
}
/**
* @param string $vendor
*/
public function setVendor(string $vendor): void
{
$this->vendor = $vendor;
}
/**
* @return string
*/
public function getPackage(): string
{
return $this->package;
}
/**
* @param string $package
*/
public function setPackage(string $package): void
{
$this->package = $package;
}
/**
* @return string|null
*/
public function getVersion(): ?string
{
return $this->version;
}
/**
* @param string|null $version
*/
public function setVersion(?string $version): void
{
$this->version = $version;
}
/**
* @return string|null
*/
public function getBranch(): ?string
{
return $this->branch;
}
/**
* @param string|null $branch
*/
public function setBranch(?string $branch): void
{
$this->branch = $branch;
}
/**
* @return string
*/
public function getSource(): string
{
return $this->source;
}
/**
* @param string $source
*/
public function setSource(string $source): void
{
$this->source = $source;
}
/** /**
* Returns a string representation of the input * Returns a string representation of the input
* *

View file

@ -33,34 +33,99 @@
* *
* @var Files * @var Files
*/ */
public $Files; private $files;
/** /**
* The version of the package returned by the query * The version of the package returned by the query
* *
* @var string|null * @var string|null
*/ */
public $Version; private $version;
/** /**
* The name of the release returned by the query * The name of the release returned by the query
* *
* @var string|null * @var string|null
*/ */
public $ReleaseName; private $release_name;
/** /**
* The description of the release returned by the query * The description of the release returned by the query
* *
* @var string|null * @var string|null
*/ */
public $ReleaseDescription; private $release_description;
/** /**
* Public Constructor * Public Constructor
*/ */
public function __construct() public function __construct()
{ {
$this->Files = new Files(); $this->files = new Files();
} }
/**
* @return Files
*/
public function getFiles(): Files
{
return $this->files;
}
/**
* @param Files $files
*/
public function setFiles(Files $files): void
{
$this->files = $files;
}
/**
* @return string|null
*/
public function getVersion(): ?string
{
return $this->version;
}
/**
* @param string|null $version
*/
public function setVersion(?string $version): void
{
$this->version = $version;
}
/**
* @return string|null
*/
public function getReleaseName(): ?string
{
return $this->release_name;
}
/**
* @param string|null $release_name
*/
public function setReleaseName(?string $release_name): void
{
$this->release_name = $release_name;
}
/**
* @return string|null
*/
public function getReleaseDescription(): ?string
{
return $this->release_description;
}
/**
* @param string|null $release_description
*/
public function setReleaseDescription(?string $release_description): void
{
$this->release_description = $release_description;
}
} }

View file

@ -1,24 +1,24 @@
<?php <?php
/* /*
* Copyright (c) Nosial 2022-2023, all rights reserved. * 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 * 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 * 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 * 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 * Software, and to permit persons to whom the Software is furnished to do so, subject to the following
* conditions: * conditions:
* *
* The above copyright notice and this permission notice shall be included in all copies or substantial portions * The above copyright notice and this permission notice shall be included in all copies or substantial portions
* of the Software. * of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * 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 * 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 * 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 * 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 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
* *
*/ */
/** @noinspection PhpMissingFieldTypeInspection */ /** @noinspection PhpMissingFieldTypeInspection */
@ -57,6 +57,22 @@
$this->entries = []; $this->entries = [];
} }
/**
* @return string
*/
public function getVersion(): string
{
return $this->version;
}
/**
* @param string $version
*/
public function setVersion(string $version): void
{
$this->version = $version;
}
/** /**
* Adds a new entry to the vault * Adds a new entry to the vault
* *

View file

@ -70,7 +70,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class Functions class Functions
{ {
@ -162,9 +162,9 @@
*/ */
public static function encodeJson(mixed $value, int $flags=0): string public static function encodeJson(mixed $value, int $flags=0): string
{ {
$flags = ($flags & self::ESCAPE_UNICODE ? 0 : JSON_UNESCAPED_UNICODE) $flags = (($flags & self::ESCAPE_UNICODE) ? 0 : JSON_UNESCAPED_UNICODE)
| JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_SLASHES
| ($flags & self::PRETTY ? JSON_PRETTY_PRINT : 0) | (($flags & self::PRETTY) ? JSON_PRETTY_PRINT : 0)
| (defined('JSON_PRESERVE_ZERO_FRACTION') ? JSON_PRESERVE_ZERO_FRACTION : 0); // since PHP 5.6.6 & PECL JSON-C 1.3.7 | (defined('JSON_PRESERVE_ZERO_FRACTION') ? JSON_PRESERVE_ZERO_FRACTION : 0); // since PHP 5.6.6 & PECL JSON-C 1.3.7
try try
@ -643,15 +643,7 @@
if($unzip_executable !== null) if($unzip_executable !== null)
{ {
$supported_types = array_merge($supported_types, [ array_push($supported_types, 'application/zip', 'application/x-zip', 'application/x-zip-compressed', 'application/octet-stream', 'application/x-compress', 'application/x-compressed', 'multipart/x-zip');
'application/zip',
'application/x-zip',
'application/x-zip-compressed',
'application/octet-stream',
'application/x-compress',
'application/x-compressed',
'multipart/x-zip'
]);
} }
elseif(RuntimeCache::get('warning_zip_shown') !== true) elseif(RuntimeCache::get('warning_zip_shown') !== true)
{ {
@ -661,12 +653,7 @@
if($tar_executable !== null) if($tar_executable !== null)
{ {
$supported_types = array_merge($supported_types, [ array_push($supported_types, 'application/x-tar', 'application/x-gzip', 'application/x-bzip2', 'application/x-xz');
'application/x-tar',
'application/x-gzip',
'application/x-bzip2',
'application/x-xz'
]);
} }
elseif(RuntimeCache::get('warning_tar_shown') !== true) elseif(RuntimeCache::get('warning_tar_shown') !== true)
{ {
@ -719,8 +706,7 @@
} }
// Search files in the given directory recursively // Search files in the given directory recursively
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $file)
foreach ($iterator as $file)
{ {
if(in_array($file->getFilename(), $files, true)) if(in_array($file->getFilename(), $files, true))
{ {
@ -819,13 +805,13 @@
// If the specified version is a release, download the source code // If the specified version is a release, download the source code
if($release_results !== null) if($release_results !== null)
{ {
$results->ReleaseName = ($release_results->ReleaseName ?? null); $results->setReleaseName($release_results->getReleaseName() ?? null);
$results->ReleaseDescription = ($release_results->ReleaseDescription ?? null); $results->setReleaseDescription($release_results->getReleaseDescription() ?? null);
$results->Files = self::mergeFilesResults($release_results->Files, ($results->Files ?? null)); $results->setFiles(self::mergeFilesResults($release_results->getFiles(), ($results->getFiles() ?? null)));
if($release_results->Version !== null) if($release_results->getVersion() !== null)
{ {
$results->Version = $release_results->Version; $results->setVersion($release_results->getVersion());
} }
} }
@ -841,44 +827,44 @@
if($git_results !== null) if($git_results !== null)
{ {
if($results->ReleaseName === null) if($results->getReleaseName() === null)
{ {
$results->ReleaseName = ($git_results->ReleaseName ?? null); $results->setReleaseName($git_results->getReleaseName() ?? null);
} }
elseif($git_results->ReleaseName !== null) elseif($git_results->getReleaseName() !== null)
{ {
if(strlen($git_results->ReleaseName) > strlen($results->ReleaseName)) if(strlen($git_results->getReleaseDescription()) > strlen($results->getReleaseDescription()))
{ {
$results->ReleaseName = $git_results->ReleaseName; $results->setReleaseName($git_results->getReleaseName());
} }
} }
if($results->ReleaseDescription === null) if($results->getReleaseDescription() === null)
{ {
$results->ReleaseDescription = ($git_results->ReleaseDescription ?? null); $results->setReleaseDescription($git_results->getReleaseDescription() ?? null);
} }
elseif($git_results->ReleaseDescription !== null) elseif($git_results->getReleaseDescription() !== null)
{ {
if(strlen($git_results->ReleaseDescription) > strlen($results->ReleaseDescription)) if(strlen($git_results->getReleaseDescription()) > strlen($results->getReleaseDescription()))
{ {
$results->ReleaseDescription = $git_results->ReleaseDescription; $results->setReleaseDescription($git_results->getReleaseDescription());
} }
} }
if($results->Version === null) if($results->getVersion() === null)
{ {
$results->Version = ($git_results->Version ?? null); $results->setVersion($git_results->getVersion() ?? null);
} }
elseif($git_results->Version !== null) elseif($git_results->getVersion() !== null)
{ {
// Version compare // Version compare
if(VersionComparator::compareVersion($git_results->Version, $results->Version) > 0) if(VersionComparator::compareVersion($git_results->getVersion(), $results->getVersion()) > 0)
{ {
$results->Version = $git_results->Version; $results->setVersion($git_results->getVersion());
} }
} }
$results->Files = self::mergeFilesResults($git_results->Files, ($results->Files ?? null)); $results->setFiles(self::mergeFilesResults($git_results->getFiles(), ($results->getFiles() ?? null)));
} }
try try
@ -893,44 +879,44 @@
if($ncc_package_results !== null) if($ncc_package_results !== null)
{ {
if($results->ReleaseName === null) if($results->getReleaseName() === null)
{ {
$results->ReleaseName = ($ncc_package_results->ReleaseName ?? null); $results->setReleaseName($ncc_package_results->getReleaseName() ?? null);
} }
elseif($ncc_package_results->ReleaseName !== null) elseif($ncc_package_results->getReleaseName() !== null)
{ {
if(strlen($ncc_package_results->ReleaseName) > strlen($results->ReleaseName)) if(strlen($ncc_package_results->getReleaseName()) > strlen($results->getReleaseName()))
{ {
$results->ReleaseName = $ncc_package_results->ReleaseName; $results->setReleaseName($ncc_package_results->getReleaseName());
} }
} }
if($results->ReleaseDescription === null) if($results->getReleaseDescription() === null)
{ {
$results->ReleaseDescription = ($ncc_package_results->ReleaseDescription ?? null); $results->setReleaseDescription($ncc_package_results->getReleaseDescription() ?? null);
} }
elseif($ncc_package_results->ReleaseDescription !== null) elseif($ncc_package_results->getReleaseDescription() !== null)
{ {
if(strlen($ncc_package_results->ReleaseDescription) > strlen($results->ReleaseDescription)) if(strlen($ncc_package_results->getReleaseDescription()) > strlen($results->getReleaseDescription()))
{ {
$results->ReleaseDescription = $ncc_package_results->ReleaseDescription; $results->setReleaseDescription($ncc_package_results->getReleaseDescription());
} }
} }
if($results->Version === null) if($results->getVersion() === null)
{ {
$results->Version = ($ncc_package_results->Version ?? null); $results->setVersion($ncc_package_results->getVersion() ?? null);
} }
elseif($ncc_package_results->Version !== null) elseif($ncc_package_results->getVersion() !== null)
{ {
// Version compare // Version compare
if(VersionComparator::compareVersion($ncc_package_results->Version, $results->Version) > 0) if(VersionComparator::compareVersion($ncc_package_results->getVersion(), $results->getVersion()) > 0)
{ {
$results->Version = $ncc_package_results->Version; $results->setVersion($ncc_package_results->getVersion());
} }
} }
$results->Files = self::mergeFilesResults($ncc_package_results->Files, ($results->Files ?? null)); $results->setFiles(self::mergeFilesResults($ncc_package_results->getFiles(), ($results->getFiles() ?? null)));
} }
return $results; return $results;

View file

@ -304,7 +304,7 @@
$project_file = Functions::searchDirectory($path, $project_files); $project_file = Functions::searchDirectory($path, $project_files);
$project_detection_results = new ProjectDetectionResults(); $project_detection_results = new ProjectDetectionResults();
$project_detection_results->ProjectType = ProjectType::UNKNOWN; $project_detection_results->setProjectType(ProjectType::UNKNOWN);
if($project_file == null) if($project_file == null)
{ {
@ -315,15 +315,15 @@
switch(basename($project_file)) switch(basename($project_file))
{ {
case 'project.json': case 'project.json':
$project_detection_results->ProjectType = ProjectType::NCC; $project_detection_results->setProjectType(ProjectType::NCC);
break; break;
case 'composer.json': case 'composer.json':
$project_detection_results->ProjectType = ProjectType::COMPOSER; $project_detection_results->setProjectType(ProjectType::COMPOSER);
break; break;
} }
$project_detection_results->ProjectPath = dirname($project_file); $project_detection_results->setProjectPath(dirname($project_file));
return $project_detection_results; return $project_detection_results;
} }
} }

View file

@ -28,7 +28,7 @@ namespace ncc\Utilities;
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class Validate class Validate
{ {

View file

@ -33,7 +33,7 @@
/** /**
* @author Zi Xing Narrakas * @author Zi Xing Narrakas
* @copyright Copyright (C) 2022-2022. Nosial - All Rights Reserved. * @copyright Copyright (C) 2022-2023. Nosial - All Rights Reserved.
*/ */
class ncc class ncc
{ {
@ -73,12 +73,12 @@
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->getVersion() === 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->getBranch() === 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');
} }
@ -105,10 +105,10 @@
// Set version information about the current build // Set version information about the current build
$VersionInformation = self::getVersionInformation(true); $VersionInformation = self::getVersionInformation(true);
define('NCC_VERSION_NUMBER', $VersionInformation->Version); define('NCC_VERSION_NUMBER', $VersionInformation->getVersion());
define('NCC_VERSION_BRANCH', $VersionInformation->Branch); define('NCC_VERSION_BRANCH', $VersionInformation->getBranch());
define('NCC_VERSION_UPDATE_SOURCE', $VersionInformation->UpdateSource); define('NCC_VERSION_UPDATE_SOURCE', $VersionInformation->getUpdateSource());
define('NCC_VERSION_FLAGS', $VersionInformation->Flags); define('NCC_VERSION_FLAGS', $VersionInformation->getFlags());
define('NCC_INIT', 1); define('NCC_INIT', 1);
return true; return true;