1
0
mirror of https://github.com/karl0ss/homepage.git synced 2025-05-18 20:36:20 +01:00

44 lines
1.4 KiB
JavaScript
Raw Normal View History

2022-09-11 14:28:29 +03:00
/* eslint-disable no-console */
import { servicesFromConfig, servicesFromDocker, cleanServiceGroups } from "utils/service-helpers";
2022-08-24 10:44:35 +03:00
export default async function handler(req, res) {
let discoveredServices;
let configuredServices;
try {
discoveredServices = cleanServiceGroups(await servicesFromDocker());
2022-09-17 16:55:18 +03:00
} catch (e) {
console.error("Failed to discover services, please check docker.yaml for errors or remove example entries.");
console.error(e);
discoveredServices = [];
}
try {
configuredServices = cleanServiceGroups(await servicesFromConfig());
2022-09-17 16:55:18 +03:00
} catch (e) {
2022-09-11 14:28:29 +03:00
console.error("Failed to load services.yaml, please check for errors");
2022-09-17 16:55:18 +03:00
console.error(e);
configuredServices = [];
}
2022-08-24 10:44:35 +03:00
const mergedGroupsNames = [
...new Set([discoveredServices.map((group) => group.name), configuredServices.map((group) => group.name)].flat()),
];
2022-08-24 10:44:35 +03:00
const mergedGroups = [];
mergedGroupsNames.forEach((groupName) => {
const discoveredGroup = discoveredServices.find((group) => group.name === groupName) || { services: [] };
const configuredGroup = configuredServices.find((group) => group.name === groupName) || { services: [] };
const mergedGroup = {
name: groupName,
services: [...discoveredGroup.services, ...configuredGroup.services].filter((service) => service),
};
mergedGroups.push(mergedGroup);
});
2022-08-24 10:44:35 +03:00
res.send(mergedGroups);
2022-08-24 10:44:35 +03:00
}