Add CLI support for passing and splitting execution arguments
This commit is contained in:
parent
7494ead7b3
commit
9418125722
4 changed files with 47 additions and 3 deletions
|
@ -24,9 +24,11 @@
|
|||
|
||||
use Exception;
|
||||
use ncc\Classes\Runtime;
|
||||
use ncc\CLI\Main;
|
||||
use ncc\Objects\CliHelpSection;
|
||||
use ncc\Utilities\Console;
|
||||
use ncc\Utilities\Functions;
|
||||
use ncc\Utilities\Resolver;
|
||||
|
||||
class ExecCommand
|
||||
{
|
||||
|
@ -40,6 +42,12 @@
|
|||
{
|
||||
$package = $args['package'] ?? null;
|
||||
$version = $args['exec-version'] ?? 'latest';
|
||||
$program_arguments = [];
|
||||
|
||||
if(isset($args['exec-args']))
|
||||
{
|
||||
$program_arguments = Resolver::splitArguments(Main::getRawArgs(), '--exec-args');
|
||||
}
|
||||
|
||||
if($package === null)
|
||||
{
|
||||
|
@ -58,7 +66,7 @@
|
|||
|
||||
try
|
||||
{
|
||||
return Runtime::execute($package_name);
|
||||
return Runtime::execute($package_name, $program_arguments);
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
|
|
|
@ -49,6 +49,11 @@
|
|||
*/
|
||||
private static $args;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private static $raw_args;
|
||||
|
||||
/**
|
||||
* @var LogLevel|null
|
||||
*/
|
||||
|
@ -63,6 +68,7 @@
|
|||
public static function start(array $argv): int
|
||||
{
|
||||
self::$args = Resolver::parseArguments(implode(' ', $argv));
|
||||
self::$raw_args = $argv;
|
||||
|
||||
if(!isset(self::$args['ncc-cli']))
|
||||
{
|
||||
|
@ -213,6 +219,16 @@
|
|||
return self::$args;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw arguments passed to ncc
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getRawArgs(): array
|
||||
{
|
||||
return self::$raw_args;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return LogLevel
|
||||
*/
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
* @throws PathNotFoundException
|
||||
* @throws OperationException
|
||||
*/
|
||||
public static function execute(string $package): int
|
||||
public static function execute(string $package, array $arguments=[]): int
|
||||
{
|
||||
if(!self::isImported($package))
|
||||
{
|
||||
|
@ -110,7 +110,8 @@
|
|||
|
||||
return ExecutionUnitRunner::executeFromSystem(
|
||||
self::$imported_packages[$package],
|
||||
Metadata::fromArray(ZiProto::decode(IO::fread($metadata_path)))->getMainExecutionPolicy()
|
||||
Metadata::fromArray(ZiProto::decode(IO::fread($metadata_path)))->getMainExecutionPolicy(),
|
||||
$arguments
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -130,6 +130,25 @@
|
|||
return $configs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Split arguments
|
||||
*
|
||||
* @param array $args List of arguments
|
||||
* @param string $arg The argument to split from
|
||||
* @return array Split arguments starting from specified argument
|
||||
*/
|
||||
public static function splitArguments(array $args, string $arg): array
|
||||
{
|
||||
$index = array_search($arg, $args);
|
||||
|
||||
if($index === false)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
return array_slice($args, $index + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves the constant's full name
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue