wrapper.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import {eServiceStatus, Service} from "../models/service";
  2. const listServices = require("linux-systemd").list;
  3. class SystemdWrapper {
  4. private getStatus(status:string): eServiceStatus {
  5. status = status.toLocaleLowerCase();
  6. if (status === "active")
  7. return eServiceStatus.eActive;
  8. else if (status === "inactive")
  9. return eServiceStatus.eInactive;
  10. else if (status === "failed")
  11. return eServiceStatus.eFailed;
  12. else if (status === "activating")
  13. return eServiceStatus.eActivating;
  14. else if (status === "deactivating")
  15. return eServiceStatus.eDeactivating;
  16. else if (status === "maintenance")
  17. return eServiceStatus.eMaintenance;
  18. else if (status === "reloading")
  19. return eServiceStatus.eReloading;
  20. else if (status === "refreshing")
  21. return eServiceStatus.eRefreshing;
  22. return eServiceStatus.eUnknown;
  23. }
  24. public async list(): Promise<Array<Service>> {
  25. let services = await listServices();
  26. return Object.keys(services)
  27. .map((serviceKey: string) => services[serviceKey])
  28. .map((service: any) => <Service> {
  29. name: service.name,
  30. description: service.description,
  31. status: this.getStatus(service.activeState),
  32. statusText: service.subState
  33. });
  34. }
  35. }
  36. export default new SystemdWrapper();