feat(aklive2d): added missing file check

This commit is contained in:
Haoyu Xu
2023-07-29 01:46:15 -04:00
parent 34c8051640
commit 154f2086f3
3 changed files with 46 additions and 4 deletions

View File

@@ -1 +1 @@
3.7.7 3.7.8

View File

@@ -7,7 +7,7 @@ import { fork } from 'child_process';
import getConfig from './libs/config.js' import getConfig from './libs/config.js'
import ProjectJson from './libs/project_json.js' import ProjectJson from './libs/project_json.js'
import EnvGenerator from './libs/env_generator.js' import EnvGenerator from './libs/env_generator.js'
import { write, rmdir, copy, writeSync, copyDir } from './libs/file.js' import { write, rmdir, copy, writeSync, copyDir, readdirSync, exists } from './libs/file.js'
import AssetsProcessor from './libs/assets_processor.js' import AssetsProcessor from './libs/assets_processor.js'
import init from './libs/initializer.js' import init from './libs/initializer.js'
import directory from './libs/directory.js' import directory from './libs/directory.js'
@@ -21,6 +21,8 @@ async function main() {
global.__projectRoot = path.dirname(fileURLToPath(import.meta.url)) global.__projectRoot = path.dirname(fileURLToPath(import.meta.url))
global.__config = getConfig() global.__config = getConfig()
global.__error = []
const op = process.argv[2] const op = process.argv[2]
let OPERATOR_NAMES = process.argv.slice(3); let OPERATOR_NAMES = process.argv.slice(3);
@@ -65,6 +67,19 @@ async function main() {
const backgrounds = ['operator_bg.png', ...background.files] const backgrounds = ['operator_bg.png', ...background.files]
const { musicToCopy, musicMapping } = musicTable.copy() const { musicToCopy, musicMapping } = musicTable.copy()
for (const e of musicToCopy) {
const musicPath = path.join(e.source, e.filename)
if (!exists(musicPath)) {
__error.push(`Music file ${e.filename} is not found in music folder.`)
}
}
for (const e of Object.keys(musicMapping)) {
if (!backgrounds.includes(e)) {
__error.push(`Background file ${e} is not found in background folder.`)
}
}
for (const OPERATOR_NAME of OPERATOR_NAMES) { for (const OPERATOR_NAME of OPERATOR_NAMES) {
const OPERATOR_SOURCE_FOLDER = path.join(__projectRoot, __config.folder.operator) const OPERATOR_SOURCE_FOLDER = path.join(__projectRoot, __config.folder.operator)
const OPERATOR_RELEASE_FOLDER = path.join(__projectRoot, __config.folder.release, OPERATOR_NAME) const OPERATOR_RELEASE_FOLDER = path.join(__projectRoot, __config.folder.release, OPERATOR_NAME)
@@ -136,6 +151,23 @@ async function main() {
break break
} }
// check whether voice files has been added
const customVoiceName = voiceLangs.filter(i => !__config.folder.voice.sub.map(e => e.lang).includes(i))[0]
const voiceLangMapping = __config.folder.voice.sub.filter(e => {
return voiceLangs.includes(e.lang) || (e.lang === "CUSTOM" && typeof customVoiceName !== 'undefined')
}).map(e => {
return {
name: e.name,
lang: e.lang === "CUSTOM" ? customVoiceName : e.lang
}
})
for (const voiceSubFolderMapping of voiceLangMapping) {
const voiceSubFolder = path.join(OPERATOR_SOURCE_FOLDER, OPERATOR_NAME, __config.folder.voice.main, voiceSubFolderMapping.name)
if (readdirSync(voiceSubFolder).length === 0) {
__error.push(`Voice folder ${voiceSubFolderMapping.name} for ${OPERATOR_NAME} is empty.`)
}
}
const envPath = path.join(OPERATOR_SOURCE_FOLDER, OPERATOR_NAME, '.env') const envPath = path.join(OPERATOR_SOURCE_FOLDER, OPERATOR_NAME, '.env')
writeSync((new EnvGenerator()).generate([ writeSync((new EnvGenerator()).generate([
{ {
@@ -254,11 +286,17 @@ async function main() {
foldersToCopy.forEach((folder) => { foldersToCopy.forEach((folder) => {
copyDir(folder.source, folder.target) copyDir(folder.source, folder.target)
}) })
fork(path.join(__projectRoot, 'vite.config.js'), [op, OPERATOR_NAME])
} }
directory({ backgrounds, musicMapping }) directory({ backgrounds, musicMapping })
if (__error.length > 0) {
const str = `${__error.length} error${__error.length > 1 ? 's were' : ' was'} found:\n${__error.join('\n')}`
throw new Error(str)
} else {
for (const OPERATOR_NAME of OPERATOR_NAMES) {
fork(path.join(__projectRoot, 'vite.config.js'), [op, OPERATOR_NAME])
}
}
} }
main(); main();

View File

@@ -67,5 +67,9 @@ export function appendSync(content, filePath) {
} }
export function readdirSync(dir) { export function readdirSync(dir) {
if (!exists(dir)) {
console.warn(`Source ${dir} does not exist.`)
return []
}
return fs.readdirSync(dir) return fs.readdirSync(dir)
} }