« get me outta code hell

thumbs, upd8: adapt media cache path to always-present wiki cache - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/gen-thumbs.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2024-05-29 18:25:02 -0300
committer(quasar) nebula <qznebula@protonmail.com>2024-05-29 19:40:10 -0300
commitcbc808e6254d2e4a7b134e723d3fce701da6dd6d (patch)
tree41afbed2fd1fa4667f5e4042a56925d815d5ebb2 /src/gen-thumbs.js
parent17c300e225714aef65f8dfd83ef974f05b24c890 (diff)
thumbs, upd8: adapt media cache path to always-present wiki cache
Diffstat (limited to 'src/gen-thumbs.js')
-rw-r--r--src/gen-thumbs.js79
1 files changed, 33 insertions, 46 deletions
diff --git a/src/gen-thumbs.js b/src/gen-thumbs.js
index c5c5ee4f..1c34994f 100644
--- a/src/gen-thumbs.js
+++ b/src/gen-thumbs.js
@@ -630,6 +630,13 @@ export async function determineMediaCachePath({
     };
   }
 
+  if (!wikiCachePath) {
+    return {
+      annotation: 'wiki cache path not provided',
+      mediaCachePath: null,
+    };
+  }
+
   let mediaIncludesThumbnailCache;
 
   try {
@@ -648,24 +655,33 @@ export async function determineMediaCachePath({
 
   // Two inferred paths are possible - "adjacent" and "contained".
   // "Contained" is the preferred format and we'll create it if
-  // wikiCachePath is provided, but if it *isn't* we won't know
-  // where to create it. Since "adjacent" isn't preferred we don't
-  // ever generate it, and we'd prefer not to *newly* generate
-  // thumbs in-place with mediaPath, so give up - we've already
-  // determined mediaPath doesn't include in-place thumbs.
-
-  const adjacentInferredPath =
-    path.join(
-      path.dirname(mediaPath),
-      path.basename(mediaPath) + '-cache');
+  // neither of the inferred paths exists. (Of course, by this
+  // point we've already determined that the media path itself
+  // isn't doubling as the thumbnail cache.)
 
   const containedInferredPath =
     (wikiCachePath
       ? path.join(wikiCachePath, 'media-cache')
       : null);
 
-  let adjacentIncludesThumbnailCache;
+  const adjacentInferredPath =
+    path.join(
+      path.dirname(mediaPath),
+      path.basename(mediaPath) + '-cache');
+
   let containedIncludesThumbnailCache;
+  let adjacentIncludesThumbnailCache;
+
+  try {
+    const files = await readdir(containedInferredPath);
+    containedIncludesThumbnailCache = files.includes(CACHE_FILE);
+  } catch (error) {
+    if (error.code === 'ENOENT') {
+      containedIncludesThumbnailCache = null;
+    } else {
+      containedIncludesThumbnailCache = undefined;
+    }
+  }
 
   try {
     const files = await readdir(adjacentInferredPath);
@@ -678,19 +694,6 @@ export async function determineMediaCachePath({
     }
   }
 
-  if (wikiCachePath) {
-    try {
-      const files = await readdir(containedInferredPath);
-      containedIncludesThumbnailCache = files.includes(CACHE_FILE);
-    } catch (error) {
-      if (error.code === 'ENOENT') {
-        containedIncludesThumbnailCache = null;
-      } else {
-        containedIncludesThumbnailCache = undefined;
-      }
-    }
-  }
-
   // Go ahead with the contained path if it exists and contains a cache -
   // no other conditions matter.
   if (containedIncludesThumbnailCache === true) {
@@ -712,7 +715,7 @@ export async function determineMediaCachePath({
   // Throw a very high-priority tantrum if the contained cache exists but
   // isn't readable. It's the preferred cache and we can't tell if it's
   // available for use or not!
-  if (wikiCachePath && containedIncludesThumbnailCache === undefined) {
+  if (containedIncludesThumbnailCache === undefined) {
     return {
       annotation: `contained path not readable`,
       mediaCachePath: null,
@@ -764,28 +767,12 @@ export async function determineMediaCachePath({
     }
   }
 
-  // If wikiCachePath was provided and the contained cache just doesn't
-  // exist yet, we'll create it during this run.
-  if (wikiCachePath && containedIncludesThumbnailCache === null) {
-    return {
-      annotation: `contained path will be created`,
-      mediaCachePath: containedInferredPath,
-    };
-  }
-
-  // If the adjacent cache doesn't exist, too dang bad!
-  // We aren't interested in newly creating it, so
-  // don't count it as an option.
-
-  // Similarly, we've already established mediaPath isn't
-  // currently doubling as the thumbnail cache, and we won't
-  // newly start generating thumbnails here either.
-
-  // All options aside struck out, there's no way to continue.
-
+  // If we haven't found any information about either inferred
+  // location (and so have fallen back to this base case), we'll
+  // create the contained cache during this run.
   return {
-    annotation: `missing wiki cache to create media cache inside`,
-    mediaCachePath: null,
+    annotation: `contained path will be created`,
+    mediaCachePath: containedInferredPath,
   };
 }