system/packages/git-modules/dist/modules.js
2024-07-02 21:56:23 +02:00

78 lines
2.4 KiB
JavaScript

"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