013-scripts-management #19

Merged
ahmido merged 17 commits from 013-scripts-management into dev 2026-01-01 22:02:30 +00:00
3 changed files with 26 additions and 13 deletions
Showing only changes of commit 854ce80df7 - Show all commits

View File

@ -27,16 +27,16 @@ public function normalize(?array $snapshot, string $policyType, ?string $platfor
$displayName = Arr::get($snapshot, 'displayName') ?? Arr::get($snapshot, 'name');
$description = Arr::get($snapshot, 'description');
$settings = [];
$entries = [];
$settings[] = ['key' => 'Type', 'value' => $policyType];
$entries[] = ['key' => 'Type', 'value' => $policyType];
if (is_string($displayName) && $displayName !== '') {
$settings[] = ['key' => 'Display name', 'value' => $displayName];
$entries[] = ['key' => 'Display name', 'value' => $displayName];
}
if (is_string($description) && $description !== '') {
$settings[] = ['key' => 'Description', 'value' => $description];
$entries[] = ['key' => 'Description', 'value' => $description];
}
// Script content and large blobs should not dominate normalized output.
@ -52,28 +52,34 @@ public function normalize(?array $snapshot, string $policyType, ?string $platfor
$value = Arr::get($snapshot, $key);
if (is_string($value) && $value !== '') {
$settings[] = ['key' => $key, 'value' => sprintf('[content: %d chars]', strlen($value))];
$entries[] = ['key' => $key, 'value' => sprintf('[content: %d chars]', strlen($value))];
}
}
$schedule = Arr::get($snapshot, 'runSchedule');
if (is_array($schedule) && $schedule !== []) {
$settings[] = ['key' => 'Run schedule', 'value' => Arr::except($schedule, ['@odata.type'])];
$entries[] = ['key' => 'Run schedule', 'value' => Arr::except($schedule, ['@odata.type'])];
}
$frequency = Arr::get($snapshot, 'runFrequency');
if (is_string($frequency) && $frequency !== '') {
$settings[] = ['key' => 'Run frequency', 'value' => $frequency];
$entries[] = ['key' => 'Run frequency', 'value' => $frequency];
}
$roleScopeTagIds = Arr::get($snapshot, 'roleScopeTagIds');
if (is_array($roleScopeTagIds) && $roleScopeTagIds !== []) {
$settings[] = ['key' => 'Scope tag IDs', 'value' => array_values($roleScopeTagIds)];
$entries[] = ['key' => 'Scope tag IDs', 'value' => array_values($roleScopeTagIds)];
}
return [
'status' => 'ok',
'settings' => $settings,
'settings' => [
[
'type' => 'keyValue',
'title' => 'Script settings',
'entries' => $entries,
],
],
'warnings' => [],
];
}
@ -85,6 +91,6 @@ public function flattenForDiff(?array $snapshot, string $policyType, ?string $pl
{
$normalized = $this->normalize($snapshot, $policyType, $platform);
return $this->defaultNormalizer->flattenForDiff($normalized['settings'] ?? []);
return $this->defaultNormalizer->flattenNormalizedForDiff($normalized);
}
}

View File

@ -65,7 +65,11 @@
{{-- Settings Blocks (for OMA Settings, Key/Value pairs, etc.) --}}
@foreach($settings as $block)
@if($block['type'] === 'table')
@php
$blockType = is_array($block) ? ($block['type'] ?? null) : null;
@endphp
@if($blockType === 'table')
<x-filament::section
:heading="$block['title'] ?? 'Settings'"
collapsible
@ -105,7 +109,7 @@
</div>
</x-filament::section>
@elseif($block['type'] === 'keyValue')
@elseif($blockType === 'keyValue')
<x-filament::section
:heading="$block['title'] ?? 'Settings'"
collapsible

View File

@ -20,7 +20,8 @@
expect($result['status'])->toBe('ok');
expect($result['settings'])->toBeArray()->not->toBeEmpty();
expect(collect($result['settings'])->pluck('key')->all())->toContain('Display name');
expect($result['settings'][0]['type'])->toBe('keyValue');
expect(collect($result['settings'][0]['entries'])->pluck('key')->all())->toContain('Display name');
});
it('normalizes deviceShellScript into readable settings', function () {
@ -36,6 +37,7 @@
expect($result['status'])->toBe('ok');
expect($result['settings'])->toBeArray()->not->toBeEmpty();
expect($result['settings'][0]['type'])->toBe('keyValue');
});
it('normalizes deviceHealthScript into readable settings', function () {
@ -52,4 +54,5 @@
expect($result['status'])->toBe('ok');
expect($result['settings'])->toBeArray()->not->toBeEmpty();
expect($result['settings'][0]['type'])->toBe('keyValue');
});