forked from EYHN/hexo-helper-live2d
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloadModelFrom.js
44 lines (32 loc) · 1.12 KB
/
loadModelFrom.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
* @description model handler from provided path and rootURL
*/
const buildGenerator = require('./buildGenerator');
const listFiles = require('./listFiles');
const path = require('path');
const url = require('url');
/**
* @typedef {Object} ModelPackageInfo
* @property {Array} modelGenerators The generator-use-array for Hexo
* @property {String} modelJsonUrl The model.json file path, null if not found
*/
/**
* Resolve model packages according to provided infos
* @param {String} assetsDir The path of model
* @param {String} rootUrl The target path(need to be relative)
* @return {ModelPackageInfo} The package info resolved
*/
module.exports = function loadModelFrom (assetsDir, rootUrl) {
const modelFiles = listFiles(assetsDir);
const modelGenerators = modelFiles.map((file) => buildGenerator(file, url.resolve(rootUrl, path.relative(assetsDir, file))));
const modelJsonUrl = modelGenerators.reduce((p, generator) => {
if (!p && generator.path.endsWith('.model.json')) {
return generator.path;
}
return p;
}, null);
return {
modelGenerators,
modelJsonUrl,
};
};