Task: #53687 Support instance-specific cfg write targets and add coverage V2 #4

Merged
norb merged 11 commits from 53687/task-support-instance-specific-cfg-write-target-v2 into master 2026-03-30 15:09:21 +00:00
2 changed files with 24 additions and 57 deletions
Showing only changes of commit 2a391f4e0a - Show all commits

Task: #53687 Simplify cfg argument handling and keep --siteDir with JSON write input (-i)

Alejandro Sosa 2026-03-26 12:27:12 +01:00

32
bin/cfg
View file

@ -56,36 +56,6 @@ function readJsonInputFile(string $path): array
return $data;
}
// Pre-parse siteDir so it can be passed after positional args.
// The input helper library does not handle this case reliably.
$preparsedSiteDir = null;
$rawArgv = $_SERVER['argv'] ?? $GLOBALS['argv'] ?? null;
if (is_array($rawArgv) && !empty($rawArgv))
{
$filteredArgv = [$rawArgv[0]];
for ($idx = 1; $idx < count($rawArgv); $idx++)
{
$arg = $rawArgv[$idx];
if ($arg === '--siteDir')
{
$preparsedSiteDir = $rawArgv[$idx + 1] ?? '';
if (isset($rawArgv[$idx + 1])) $idx++;
continue;
}
if (str_starts_with($arg, '--siteDir='))
{
$preparsedSiteDir = substr($arg, strlen('--siteDir='));
continue;
}
$filteredArgv[] = $arg;
}
$_SERVER['argv'] = $filteredArgv;
$GLOBALS['argv'] = $filteredArgv;
}
$version = '0.4';
$actions = [ 'show', 'write', 'help' ];
@ -289,7 +259,7 @@ if ($pkgPath = $argv->find('pkgPath')) $cfg->pkgPath(rtrim($pkgPath, '/').'/');
$site = null;
$siteFlag = 0x01;
$siteInput = ($preparsedSiteDir !== null) ? $preparsedSiteDir : $argv->find('siteDir');
$siteInput = $argv->find('siteDir');
if ($siteInput !== null && $siteInput !== false)
{
$siteInput = trim((string)$siteInput);

View file

@ -156,8 +156,7 @@ class CfgTest extends TestCase
'write',
'Extension',
'module:code="X100"',
'--siteDir',
'owner_xyz',
'--siteDir=owner_xyz',
]);
$this->assertSame(0, $result['code'], $result['output']);
@ -178,8 +177,7 @@ class CfgTest extends TestCase
'write',
'Extension',
'module:code="X100"',
'--siteDir',
'owner_xyz',
'--siteDir=owner_xyz',
]);
$this->assertSame(0, $firstWrite['code'], $firstWrite['output']);
@ -189,8 +187,7 @@ class CfgTest extends TestCase
'write',
'Extension',
'module:label="demo-module"',
'--siteDir',
'owner_xyz',
'--siteDir=owner_xyz',
]);
$this->assertSame(0, $secondWrite['code'], $secondWrite['output']);
@ -330,7 +327,7 @@ class CfgTest extends TestCase
]);
$this->assertSame(1, $result['code']);
$this->assertStringContainsString('Option --siteDir is empty.', $result['output']);
$this->assertStringContainsString('a value is required for --siteDir', $result['output']);
}
private function runCfg(array $args): array