commit e7db1a22209af5c81fccc6914d97db325efac1b9
parent b27126269546093439cf1b93f593f8f1cc31cd42
Author: Pablo Murad <pblmrd@gmail.com>
Date: Fri, 1 May 2026 12:14:05 -0300
metadata
Diffstat:
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/server/index.ts b/server/index.ts
@@ -49,10 +49,18 @@ function resolveEffectiveMetadataTsv(): {
return { path: resolved, envRequested: resolved, usedFallback: false };
}
-const _meta = resolveEffectiveMetadataTsv();
-const METADATA_TSV = _meta.path;
-const METADATA_ENV_REQUESTED = _meta.envRequested;
-const METADATA_USED_FALLBACK = _meta.usedFallback;
+/** Set at runtime in `main()` (and on `/api/reload`) so env matches PM2/dotenv; avoids load-time races. */
+let METADATA_TSV = "";
+let METADATA_ENV_REQUESTED: string | null = null;
+let METADATA_USED_FALLBACK = false;
+
+function applyMetadataPathsFromEnv() {
+ dotenv.config({ path: path.join(__dirname, "..", ".env") });
+ const m = resolveEffectiveMetadataTsv();
+ METADATA_TSV = m.path;
+ METADATA_ENV_REQUESTED = m.envRequested;
+ METADATA_USED_FALLBACK = m.usedFallback;
+}
function hintForMetadataNotFound(message: string): string {
if (!message.includes("not found")) return message;
@@ -115,6 +123,7 @@ function randomTrack(): TrackMeta | null {
}
async function main() {
+ applyMetadataPathsFromEnv();
console.info(`MyMusics: cwd=${process.cwd()}`);
console.info(
`MyMusics: metadata file ${METADATA_TSV}${METADATA_USED_FALLBACK ? ` (fallback; env had ${METADATA_ENV_REQUESTED})` : ""}`,
@@ -156,6 +165,7 @@ async function main() {
app.post("/api/reload", async (_req, reply) => {
try {
+ applyMetadataPathsFromEnv();
const next = loadTracksFromTsv(METADATA_TSV, IA_ITEM_ID);
pool = next;
console.info(`MyMusics: reloaded ${pool.length} tracks from metadata`);