From f8557485ac06a7b2527c50dcf638497212678a16 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 16 Feb 2022 23:04:08 -0400 Subject: pre-writes: art tags, artists & aliases --- src/upd8.js | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'src/upd8.js') diff --git a/src/upd8.js b/src/upd8.js index 024c449..d7d9e5c 100755 --- a/src/upd8.js +++ b/src/upd8.js @@ -2794,6 +2794,10 @@ async function main() { track.artTagData = WD.artTagData; } + for (const artist of WD.artistData) { + artist.artistData = WD.artistData; + } + // Extra organization stuff needed for listings and the like. Object.assign(wikiData, { @@ -2841,20 +2845,22 @@ async function main() { WD.justEverythingSortedByArtDateMan = sortByArtDate(WD.justEverythingMan.slice()); // console.log(JSON.stringify(justEverythingSortedByArtDateMan.map(toAnythingMan), null, 2)); + WD.artistAliasData = wikiData.artistData.flatMap(artist => { + const origRef = Thing.getReference(artist); + return (artist.aliasNames?.map(name => { + const alias = new Artist(); + alias.name = name; + alias.isAlias = true; + alias.aliasedArtistRef = origRef; + alias.artistData = WD.artistData; + return alias; + }) ?? []); + }); + // TODO: this should probably be some kinda generalized function lol { const aggregate = openAggregate({message: `Errors validating artist references in data`}); - const aliasToOrigMap = new Map(); - const aliasArtistData = wikiData.artistData.flatMap(artist => { - return (artist.aliasNames?.map(ref => { - const alias = new Artist(); - alias.name = ref; - aliasToOrigMap.set(alias, artist); - return alias; - }) ?? []); - }); - const sources = [ [WD.albumData, [ 'artistContribsByRef', @@ -2888,9 +2894,9 @@ async function main() { thingAgg.nest({message: `Errors for property ${color.green(prop)}`}, propAgg => { for (const { who: ref } of contribs) { propAgg.call(() => { - const entryAlias = find.artist(ref, {wikiData: {artistData: aliasArtistData}, quiet: true}); + const entryAlias = find.artist(ref, {wikiData: {artistData: wikiData.artistAliasData}, quiet: true}); if (entryAlias) { - const orig = aliasToOrigMap.get(entryAlias); + const orig = find.artist(entryAlias.aliasedArtistRef, {wikiData: {artistData: wikiData.artistData}, quiet: true}); throw new Error(`Reference ${color.red(ref)} is to an alias, reference ${color.green(orig.name)} instead`); } const entry = find.artist(ref, {wikiData: {artistData: wikiData.artistData}, quiet: true}); @@ -2995,7 +3001,7 @@ async function main() { const albumAndTrackDataSortedByArtDateMan = sortByArtDate([...WD.albumData, ...WD.trackData]); - for (const tag of WD.tagData) { + for (const tag of WD.artTagData) { tag.things = albumAndTrackDataSortedByArtDateMan.filter(thing => thing.artTags.includes(tag)); } @@ -3071,8 +3077,6 @@ async function main() { logInfo`Writing site pages: ${writeAll ? 'all' : Object.keys(writeFlags).join(', ')}`; - return; - await writeSymlinks(); await writeSharedFilesAndPages({strings: defaultStrings, wikiData}); @@ -3103,6 +3107,12 @@ async function main() { } const targets = pageSpec.targets({wikiData}); + if (!Array.isArray(targets)) { + logError`${flag + '.targets'} was called, but it didn't return an array! (${typeof targets})`; + error = true; + return null; + } + return {flag, pageSpec, targets}; }).filter(Boolean); @@ -3140,6 +3150,8 @@ async function main() { return true; }; + return; + writes = buildStepsWithTargets.flatMap(({ flag, pageSpec, targets }) => { const writes = targets.flatMap(target => pageSpec.write(target, {wikiData})?.slice() || []); -- cgit 1.3.0-6-gf8a5