mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
/* global CloudCmd */
|
|
const rendy = require('rendy');
|
|
const itype = require('itype');
|
|
const load = require('load.js');
|
|
const tryToCatch = require('try-to-catch');
|
|
|
|
const {findObjByNameInArr} = require('../../common/util');
|
|
|
|
const Files = require('./files');
|
|
|
|
module.exports = (name, options, callback = options) => {
|
|
const {prefix, config} = CloudCmd;
|
|
const o = options;
|
|
|
|
if (o.name && window[o.name])
|
|
return callback();
|
|
|
|
Files.get('modules').then(async (modules) => {
|
|
const online = config('online') && navigator.onLine;
|
|
const module = findObjByNameInArr(modules.remote, name);
|
|
|
|
const isArray = itype.array(module.local);
|
|
const {version} = module;
|
|
|
|
let remoteTmpls;
|
|
let local;
|
|
|
|
if (isArray) {
|
|
remoteTmpls = module.remote;
|
|
local = module.local;
|
|
} else {
|
|
remoteTmpls = [module.remote];
|
|
local = [module.local];
|
|
}
|
|
|
|
const localURL = local.map((url) => prefix + url);
|
|
|
|
const remoteURL = remoteTmpls.map((tmpl) => {
|
|
return rendy(tmpl, {
|
|
version,
|
|
});
|
|
});
|
|
|
|
if (online) {
|
|
const [e] = await tryToCatch(load.parallel, remoteURL);
|
|
|
|
if (!e)
|
|
return callback();
|
|
}
|
|
|
|
const [e] = await tryToCatch(load.parallel, localURL);
|
|
callback(e);
|
|
});
|
|
};
|