Files
NetMesh/domain/systemManager/containerState.ts

24 lines
868 B
TypeScript
Raw Normal View History

import type { DockerContainerInfo } from './types';
/**
* A paused container reports Status "Up 5 minutes (Paused)", so a bare
* /up/i test classifies it as running too. Paused must win, and the
* machine-readable State field is preferred over the human Status text.
*/
export function getContainerFlags(container: DockerContainerInfo): {
isRunning: boolean;
isPaused: boolean;
} {
const isPaused = container.state === 'paused' || /paused/i.test(container.status);
const isRunning = !isPaused
&& (container.state === 'running' || /up/i.test(container.status));
return { isRunning, isPaused };
}
export function getContainerTone(container: DockerContainerInfo): 'success' | 'warning' | 'muted' {
const { isRunning, isPaused } = getContainerFlags(container);
if (isPaused) return 'warning';
if (isRunning) return 'success';
return 'muted';
}