Added checksum
This commit is contained in:
parent
e1f813ab60
commit
976518439f
7 changed files with 104 additions and 2 deletions
|
@ -52,6 +52,19 @@
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isset($args['info']))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return self::displayInfo($args);
|
||||||
|
}
|
||||||
|
catch(Exception $e)
|
||||||
|
{
|
||||||
|
Console::outException(sprintf('Failed to display info: %s', $e->getMessage()), $e, 1);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(isset($args['headers']))
|
if(isset($args['headers']))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -149,6 +162,31 @@
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints out basic information about the package
|
||||||
|
*
|
||||||
|
* @param array $args
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
private static function displayInfo(array $args): int
|
||||||
|
{
|
||||||
|
$package_reader = new PackageReader($args['path'] ?? $args['p']);
|
||||||
|
|
||||||
|
Console::out(sprintf('File Version: %s', $package_reader->getFileVersion()));
|
||||||
|
Console::out(sprintf('crc32: %s', $package_reader->getChecksum()));
|
||||||
|
Console::out(sprintf('sha256: %s', $package_reader->getChecksum('sha256')));
|
||||||
|
Console::out(sprintf('Flags: %s', implode(', ', $package_reader->getFlags())));
|
||||||
|
Console::out(sprintf('Package Offset: %s', $package_reader->getPackageOffset()));
|
||||||
|
Console::out(sprintf('Package Length: %s', $package_reader->getPackageLength()));
|
||||||
|
Console::out(sprintf('Header Offset: %s', $package_reader->getHeaderOffset()));
|
||||||
|
Console::out(sprintf('Header Length: %s', $package_reader->getHeaderLength()));
|
||||||
|
Console::out(sprintf('Data Offset: %s', $package_reader->getDataOffset()));
|
||||||
|
Console::out(sprintf('Data Length: %s', $package_reader->getDataLength()));
|
||||||
|
Console::out(sprintf('Directory Size: %d items', count($package_reader->getDirectory())));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the assembly section
|
* Displays the assembly section
|
||||||
*
|
*
|
||||||
|
@ -311,6 +349,7 @@
|
||||||
new CliHelpSection(['--path', '-p'], 'Required. Specifies the path to the binary package to inspect'),
|
new CliHelpSection(['--path', '-p'], 'Required. Specifies the path to the binary package to inspect'),
|
||||||
new CliHelpSection(['--json'], 'Prints out the information of the package in JSON format'),
|
new CliHelpSection(['--json'], 'Prints out the information of the package in JSON format'),
|
||||||
new CliHelpSection(['--pretty-json'], 'Prints out the information of the package in pretty JSON format'),
|
new CliHelpSection(['--pretty-json'], 'Prints out the information of the package in pretty JSON format'),
|
||||||
|
new CliHelpSection(['info'], 'Prints out basic information about the binary package'),
|
||||||
new CliHelpSection(['headers'], 'Prints out the headers of the package'),
|
new CliHelpSection(['headers'], 'Prints out the headers of the package'),
|
||||||
new CliHelpSection(['metadata'], 'Prints out the metadata of the package'),
|
new CliHelpSection(['metadata'], 'Prints out the metadata of the package'),
|
||||||
new CliHelpSection(['assembly'], 'Prints out the assembly information of the package'),
|
new CliHelpSection(['assembly'], 'Prints out the assembly information of the package'),
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
use ncc\Exceptions\NotSupportedException;
|
use ncc\Exceptions\NotSupportedException;
|
||||||
use ncc\Exceptions\PathNotFoundException;
|
use ncc\Exceptions\PathNotFoundException;
|
||||||
use ncc\Interfaces\CompilerInterface;
|
use ncc\Interfaces\CompilerInterface;
|
||||||
|
use ncc\Managers\PackageManager;
|
||||||
use ncc\Managers\ProjectManager;
|
use ncc\Managers\ProjectManager;
|
||||||
use ncc\Objects\Package\Component;
|
use ncc\Objects\Package\Component;
|
||||||
use ncc\Objects\Package\Metadata;
|
use ncc\Objects\Package\Metadata;
|
||||||
|
@ -192,9 +193,18 @@
|
||||||
$this->processResource($package_writer, $resource);
|
$this->processResource($package_writer, $resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$package_manager = new PackageManager();
|
||||||
|
|
||||||
// Add the project dependencies
|
// Add the project dependencies
|
||||||
foreach($this->project_manager->getProjectConfiguration()->getBuild()->getDependencies() as $dependency)
|
foreach($this->project_manager->getProjectConfiguration()->getBuild()->getDependencies() as $dependency)
|
||||||
{
|
{
|
||||||
|
if(isset($configuration->getOptions()[BuildConfigurationOptions::STATIC_DEPENDENCIES]))
|
||||||
|
{
|
||||||
|
$package_entry = $package_manager->getPackageLock()->getEntry($dependency->getName());
|
||||||
|
$shadow_package = $package_entry->getShadowPackagePath($dependency->getVersion());
|
||||||
|
// TODO: Add support for static dependencies
|
||||||
|
}
|
||||||
|
|
||||||
$package_writer->addDependencyConfiguration($dependency);
|
$package_writer->addDependencyConfiguration($dependency);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -654,6 +654,36 @@
|
||||||
return $this->data_length;
|
return $this->data_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the checksum of the package
|
||||||
|
*
|
||||||
|
* @param string $hash
|
||||||
|
* @param bool $binary
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getChecksum(string $hash='crc32b', bool $binary=false): string
|
||||||
|
{
|
||||||
|
$checksum = hash($hash, '', $binary);
|
||||||
|
|
||||||
|
fseek($this->package_file, $this->package_offset);
|
||||||
|
$bytes_left = $this->package_length;
|
||||||
|
|
||||||
|
while ($bytes_left > 0)
|
||||||
|
{
|
||||||
|
$buffer = fread($this->package_file, min(1024, $bytes_left));
|
||||||
|
$buffer_length = strlen($buffer);
|
||||||
|
$bytes_left -= $buffer_length;
|
||||||
|
$checksum = hash($hash, ($checksum . $buffer), $binary);
|
||||||
|
|
||||||
|
if ($buffer_length === 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $checksum;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $path
|
* @param string $path
|
||||||
* @return void
|
* @return void
|
||||||
|
|
|
@ -31,4 +31,6 @@
|
||||||
public const NCC_CONFIGURATION = 'ncc_configuration';
|
public const NCC_CONFIGURATION = 'ncc_configuration';
|
||||||
|
|
||||||
public const OUTPUT_FILE = 'output_file';
|
public const OUTPUT_FILE = 'output_file';
|
||||||
|
|
||||||
|
public const STATIC_DEPENDENCIES = 'static';
|
||||||
}
|
}
|
|
@ -518,8 +518,6 @@
|
||||||
$package_reader->getComponent($component_name)->getData([ComponentDecodeOptions::AS_FILE]), 0755
|
$package_reader->getComponent($component_name)->getData([ComponentDecodeOptions::AS_FILE]), 0755
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Console::inlineProgressBar(++$current_step, $total_steps);
|
Console::inlineProgressBar(++$current_step, $total_steps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,17 @@
|
||||||
return $this->getVersion($version)->getPath($this->name);
|
return $this->getVersion($version)->getPath($this->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the path to where the shadow package is located
|
||||||
|
*
|
||||||
|
* @param string $version
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getShadowPackagePath(string $version): string
|
||||||
|
{
|
||||||
|
return $this->getVersion($version)->getShadowPackagePath($this->name);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a new version entry to the package, if overwrite is true then
|
* Adds a new version entry to the package, if overwrite is true then
|
||||||
* the entry will be overwritten if it exists, otherwise it will return
|
* the entry will be overwritten if it exists, otherwise it will return
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
namespace ncc\Objects\PackageLock;
|
namespace ncc\Objects\PackageLock;
|
||||||
|
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
|
use ncc\Enums\FileDescriptor;
|
||||||
use ncc\Exceptions\ConfigurationException;
|
use ncc\Exceptions\ConfigurationException;
|
||||||
use ncc\Interfaces\BytecodeObjectInterface;
|
use ncc\Interfaces\BytecodeObjectInterface;
|
||||||
use ncc\Objects\ProjectConfiguration\Dependency;
|
use ncc\Objects\ProjectConfiguration\Dependency;
|
||||||
|
@ -222,6 +223,17 @@
|
||||||
return PathFinder::getPackagesPath() . DIRECTORY_SEPARATOR . sprintf('%s=%s', $package_name, $this->getVersion());
|
return PathFinder::getPackagesPath() . DIRECTORY_SEPARATOR . sprintf('%s=%s', $package_name, $this->getVersion());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the path where the shadow package is located
|
||||||
|
*
|
||||||
|
* @param string $package_name
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getShadowPackagePath(string $package_name): string
|
||||||
|
{
|
||||||
|
return $this->getPath($package_name) . DIRECTORY_SEPARATOR . FileDescriptor::SHADOW_PACKAGE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array representation of the object
|
* Returns an array representation of the object
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue