From fdffdc1a80ff5e1dbc9e97f327966dc88b119b93 Mon Sep 17 00:00:00 2001 From: Riccardi Dalexis Date: Sun, 26 Nov 2023 23:54:27 -0500 Subject: [PATCH] changed bookmark label format to requested format --- src/utils/config/bookmark-helpers.js | 36 +++++++++++++++------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/utils/config/bookmark-helpers.js b/src/utils/config/bookmark-helpers.js index 3397d1df..fe6f5be7 100644 --- a/src/utils/config/bookmark-helpers.js +++ b/src/utils/config/bookmark-helpers.js @@ -4,7 +4,7 @@ import path from "path"; import yaml from "js-yaml"; import Docker from "dockerode"; -import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config"; +import checkAndCopyConfig, { getSettings, CONF_DIR, substituteEnvironmentVars } from "utils/config/config"; import getDockerArguments from "utils/config/docker"; import * as shvl from "utils/config/shvl"; @@ -91,6 +91,8 @@ export async function bookmarksFromDocker() { return []; } + const { instanceName } = getSettings(); + const bookmarkServers = await Promise.all( Object.keys(servers).map(async (serverName) => { try { @@ -99,26 +101,28 @@ export async function bookmarksFromDocker() { const discovered = containers.map((container) => { let constructedBookmark = null; const containerLabels = isSwarm ? shvl.get(container, "Spec.Labels") : container.Labels; + const containerName = isSwarm ? shvl.get(container, "Spec.Name") : container.Names[0]; Object.keys(containerLabels).forEach((label) => { if (label.startsWith("homepage.bookmarks.")) { - const cleanLabel = label.replace("homepage.bookmarks.", ""); + const containerNameNoSlash = containerName.replace(/^\//, ""); + const cleanLabel = label.replace(`homepage.bookmarks.${containerNameNoSlash}.`, ""); - // homepage.bookmarks.this_is_bookmark_group.this_is_bookmark_name.abbr = "href" - - // this_is_bookmark_group.this_is_bookmark_name.abbr = "href" - // TODO should I add error handling for badly formatted labels? - const [bookmarkGroup, bookmarkName, bookmarkAbbr] = cleanLabel.split('.'); - const bookmarkHref= containerLabels[label]; - - constructedBookmark = { - group: bookmarkGroup, - name: bookmarkName, - href: bookmarkHref, - abbr: bookmarkAbbr, - type: "bookmark" - }; + let value = cleanLabel; + if (instanceName && value.startsWith(`instance.${instanceName}.`)) { + value = value.replace(`instance.${instanceName}.`, ""); + } else if (value.startsWith("instance.")) { + return; + } + if (!constructedBookmark) { + constructedBookmark = { + container: containerNameNoSlash, + server: serverName, + type: "bookmark", + }; + } + shvl.set(constructedBookmark, value, substituteEnvironmentVars(containerLabels[label])); } });