aki-plugin-manager
Version:
Lightweight at-runtime plugin manager and loader
32 lines (31 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.list = void 0;
const fs_1 = require("fs");
const path_1 = require("path");
const _getVersion = (packageFile) => {
const { version } = JSON.parse(fs_1.readFileSync(packageFile, 'utf-8'));
return version;
};
const list = (baseDir) => {
if (!fs_1.existsSync(baseDir))
return [];
const packageDirs = fs_1.readdirSync(baseDir).filter((name) => fs_1.statSync(path_1.join(baseDir, name)).isDirectory());
const packages = [];
packageDirs.forEach((packageDir) => {
if (!packageDir.startsWith('@')) {
const packageFile = path_1.join(baseDir, packageDir, 'package.json');
packages.push([packageDir, _getVersion(packageFile)]);
return;
}
const subDirs = fs_1.readdirSync(path_1.join(baseDir, packageDir));
subDirs.forEach((subDir) => {
if (fs_1.statSync(path_1.join(baseDir, packageDir, subDir)).isDirectory()) {
const packageFile = path_1.join(baseDir, packageDir, subDir, 'package.json');
packages.push([`${packageDir}/${subDir}`, _getVersion(packageFile)]);
}
});
});
return packages;
};
exports.list = list;