Spaces:
Build error
Build error
const fs = require('fs'); | |
const path= require('path'); | |
const config = require(path.join(process.cwd(), './config.conf')); | |
const contentDirectory = path.join(process.cwd(), 'default/content'); | |
const contentLogPath = path.join(contentDirectory, 'content.log'); | |
const contentIndexPath = path.join(contentDirectory, 'index.json'); | |
function checkForNewContent() { | |
try { | |
if (config.skipContentCheck) { | |
return; | |
} | |
const contentLog = getContentLog(); | |
const contentIndexText = fs.readFileSync(contentIndexPath, 'utf8'); | |
const contentIndex = JSON.parse(contentIndexText); | |
for (const contentItem of contentIndex) { | |
// If the content item is already in the log, skip it | |
if (contentLog.includes(contentItem.filename)) { | |
continue; | |
} | |
contentLog.push(contentItem.filename); | |
const contentPath = path.join(contentDirectory, contentItem.filename); | |
if (!fs.existsSync(contentPath)) { | |
console.log(`Content file ${contentItem.filename} is missing`); | |
continue; | |
} | |
const contentTarget = getTargetByType(contentItem.type); | |
if (!contentTarget) { | |
console.log(`Content file ${contentItem.filename} has unknown type ${contentItem.type}`); | |
continue; | |
} | |
const targetPath = path.join(process.cwd(), contentTarget, contentItem.filename); | |
if (fs.existsSync(targetPath)) { | |
console.log(`Content file ${contentItem.filename} already exists in ${contentTarget}`); | |
continue; | |
} | |
fs.cpSync(contentPath, targetPath, { recursive: true, force: false }); | |
console.log(`Content file ${contentItem.filename} copied to ${contentTarget}`); | |
} | |
fs.writeFileSync(contentLogPath, contentLog.join('\n')); | |
} catch (err) { | |
console.log('Content check failed', err); | |
} | |
} | |
function getTargetByType(type) { | |
switch (type) { | |
case 'character': | |
return 'public/characters'; | |
case 'sprites': | |
return 'public/characters'; | |
case 'background': | |
return 'public/backgrounds'; | |
case 'world': | |
return 'public/worlds'; | |
case 'sound': | |
return 'public/sounds'; | |
case 'avatar': | |
return 'public/User Avatars'; | |
case 'theme': | |
return 'public/themes'; | |
default: | |
return null; | |
} | |
} | |
function getContentLog() { | |
if (!fs.existsSync(contentLogPath)) { | |
return []; | |
} | |
const contentLogText = fs.readFileSync(contentLogPath, 'utf8'); | |
return contentLogText.split('\n'); | |
} | |
module.exports = { | |
checkForNewContent, | |
} | |