"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.has = exports.get = exports.read = exports.complete = void 0; const fs = require("fs"); const path = require("path"); const url = require("url"); const exists_1 = require("@xblox/fs/exists"); const lib_1 = require("./lib"); const module_1 = require("./module"); const lodash = require("lodash"); const complete = (module, root) => { const repo = module.options.repository || ''; const parts = url.parse(repo); module.repoName = path.basename(parts.path || '', path.extname(repo)); module.exists = (0, exists_1.sync)(path.join(root, module.options.directory)) !== false; const cwd = path.join(root, module.options.directory); if ((0, exists_1.sync)(cwd)) { module.cwd = cwd; } else { module.cwd = root; } module.isGithub = module.options.repository.indexOf('github.com') !== -1; return module; }; exports.complete = complete; const read = (source, target, profile) => { let pkginfo = null; let packageJSON = ''; try { if (fs.statSync(source).isDirectory()) { if (fs.statSync(path.join(source + '/package.json'))) { packageJSON = path.join(source + '/package.json'); } } else if (fs.statSync(path.join(process.cwd(), source)).isFile()) { packageJSON = path.join(process.cwd(), source); } } catch (e) { console.warn('error reading modules', e); } if (packageJSON) { pkginfo = require(packageJSON); } else { pkginfo = {}; } if (pkginfo && pkginfo.modules) { return pkginfo.modules.map((module) => (0, exports.complete)(module, target)); } else { return []; } }; exports.read = read; const get = (source, target, profile = '') => { let modules = (0, exports.read)(source, target, profile); if (profile) { modules = (0, lib_1.profileFilter)(modules, profile); } //return modules; return modules.map((module) => { return module_1.Module.from(module); }); }; exports.get = get; const has = (modules, repository, directory) => { const module = lodash.find(modules, { options: { directory, repository } }); return module; }; exports.has = has; //# sourceMappingURL=modules.js.map