import {eServiceStatus, Service} from "../models/service"; const listServices = require("linux-systemd").list; class SystemdWrapper { private getStatus(status:string): eServiceStatus { status = status.toLocaleLowerCase(); if (status === "active") return eServiceStatus.eActive; else if (status === "inactive") return eServiceStatus.eInactive; else if (status === "failed") return eServiceStatus.eFailed; else if (status === "activating") return eServiceStatus.eActivating; else if (status === "deactivating") return eServiceStatus.eDeactivating; else if (status === "maintenance") return eServiceStatus.eMaintenance; else if (status === "reloading") return eServiceStatus.eReloading; else if (status === "refreshing") return eServiceStatus.eRefreshing; return eServiceStatus.eUnknown; } public async list(): Promise> { let services = await listServices(); return Object.keys(services) .map((serviceKey: string) => services[serviceKey]) .map((service: any) => { name: service.name, description: service.description, status: this.getStatus(service.activeState), statusText: service.subState }); } } export default new SystemdWrapper();