multi script beta
This commit is contained in:
@@ -8,6 +8,13 @@
|
||||
players: number | null;
|
||||
error: string | null;
|
||||
}
|
||||
interface DepScript {
|
||||
deployment_id: string;
|
||||
script_id: number;
|
||||
script_name: string | null;
|
||||
script_version: number | null;
|
||||
prior_version: number | null;
|
||||
}
|
||||
interface Deployment {
|
||||
id: string;
|
||||
action: string;
|
||||
@@ -23,6 +30,7 @@
|
||||
script_name: string | null;
|
||||
script_version: number | null;
|
||||
prior_version: number | null;
|
||||
scripts: DepScript[];
|
||||
}
|
||||
|
||||
interface DriftFile { relPath: string; size: number; sha256: string }
|
||||
@@ -101,11 +109,24 @@
|
||||
let active = $derived(deployments.filter(isActive));
|
||||
let history = $derived(deployments.filter((d) => !isActive(d)));
|
||||
|
||||
function scriptSummary(d: Deployment): string {
|
||||
if (d.scripts && d.scripts.length > 0) {
|
||||
if (d.scripts.length === 1) {
|
||||
const s = d.scripts[0];
|
||||
return `${s.script_name ?? '(deleted)'} v${s.script_version ?? '?'}`;
|
||||
}
|
||||
return `${d.scripts.length} scripts`;
|
||||
}
|
||||
// Legacy fallback: pre-multi-script rows still use the top-level cols.
|
||||
if (d.script_name) return `${d.script_name} v${d.script_version ?? '?'}`;
|
||||
return '';
|
||||
}
|
||||
|
||||
async function rollbackPromote(d: Deployment, ev: Event): Promise<void> {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
const priorLabel = d.prior_version === null ? 'nothing (undo the first promotion)' : `v${d.prior_version}`;
|
||||
const msg = `Rollback ${d.script_name ?? 'this script'} v${d.script_version ?? '?'} on ${d.servers.length} server(s)? Reverts to ${priorLabel}.`;
|
||||
const summary = scriptSummary(d) || 'this promote';
|
||||
const msg = `Rollback ${summary} on ${d.servers.length} server(s)?`;
|
||||
if (!confirm(msg)) return;
|
||||
rollingBack = d.id;
|
||||
flash = null;
|
||||
@@ -183,10 +204,8 @@
|
||||
<div class="head">
|
||||
<div class="head-l">
|
||||
<span class="action">{d.action}</span>
|
||||
{#if d.action === 'promote' && d.script_name}
|
||||
<span class="target mono">{d.script_name} v{d.script_version}</span>
|
||||
{:else if d.action === 'rollback' && d.script_name}
|
||||
<span class="target mono">{d.script_name} → v{d.script_version ?? '—'}</span>
|
||||
{#if d.action === 'promote' || d.action === 'rollback'}
|
||||
<span class="target mono">{scriptSummary(d)}</span>
|
||||
{/if}
|
||||
{#if d.rolled_back_by}
|
||||
<span class="tag rb">rolled back</span>
|
||||
|
||||
Reference in New Issue
Block a user