@speedy-js/mono
Version:
Monorepo development & continuous integration tooling.
66 lines • 2.14 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolvePackages = exports.resolveLocalPackages = exports.fetchPackageVersion = void 0;
/**
* Module dependencies
*/
const fs_1 = require("fs");
const execa_1 = __importDefault(require("execa"));
const path_1 = require("path");
/**
* Fetch package version
*/
async function fetchPackageVersion(name, tag) {
try {
return (await (0, execa_1.default)('npm', ['view', `${name}@${tag}`, 'version'])).stdout.toString();
}
catch (e) {
console.log(e);
return '- (1st release)';
}
}
exports.fetchPackageVersion = fetchPackageVersion;
/**
* Resolve local packages.
*/
function resolveLocalPackages({ cwd = process.cwd(), packagesDir, }) {
if (!packagesDir) {
packagesDir = (0, path_1.join)(cwd, 'packages');
}
const PRIVATE_PACKAGES = ['.DS_Store'];
return (0, fs_1.readdirSync)(packagesDir)
.filter((n) => !PRIVATE_PACKAGES.includes(n))
.map((n) => ({
dirname: n,
pkgPath: (0, path_1.join)(packagesDir, n, 'package.json'),
}))
.filter((p) => (0, fs_1.existsSync)(p.pkgPath))
.map((p) => {
const pkg = require(p.pkgPath);
return {
dirname: p.dirname,
name: pkg.name,
pkg,
};
})
.filter((p) => !p.pkg.private);
}
exports.resolveLocalPackages = resolveLocalPackages;
/**
* Retrieve packages informations
*/
async function resolvePackages({ cwd = process.cwd(), tag = 'latest', }) {
const packagesDir = (0, path_1.join)(cwd, 'packages');
const packages = resolveLocalPackages({ cwd, packagesDir });
return Promise.all(packages.map(async (pkg) => ({
name: pkg.name,
dirname: pkg.dirname,
version: await fetchPackageVersion(pkg.name, tag),
path: (0, path_1.join)(packagesDir, pkg.dirname),
})));
}
exports.resolvePackages = resolvePackages;
//# sourceMappingURL=resolvePackages.js.map