@ts-dev-tools/core
Version:
TS dev tools Core
35 lines (34 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.install = install;
const node_fs_1 = require("node:fs");
const node_path_1 = require("node:path");
const constants_1 = require("../constants");
const DuplicateDependenciesService_1 = require("../services/DuplicateDependenciesService");
const MigrationsService_1 = require("../services/MigrationsService");
const PackageJson_1 = require("../services/PackageJson");
const PeerDependenciesService_1 = require("../services/PeerDependenciesService");
const SymlinkDependenciesService_1 = require("../services/SymlinkDependenciesService");
async function install({ cwd, dir = ".", }) {
// Ensure that we're not trying to install outside cwd
const absoluteProjectDir = (0, node_path_1.resolve)(cwd, dir);
if (!(0, node_fs_1.existsSync)(absoluteProjectDir)) {
throw new Error(`Unable to install ${constants_1.PROJECT_NAME} in given directory ${(0, node_path_1.join)(cwd, dir)}`);
}
if (!absoluteProjectDir.startsWith(cwd)) {
throw new Error(`Unable to install ${constants_1.PROJECT_NAME} in a different folder than current process`);
}
// Run installation migration
const currentVersion = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir).getTsDevToolsVersion();
if (currentVersion) {
console.info(`Updating ${constants_1.PROJECT_NAME} installation...`);
}
else {
console.info(`Installing ${constants_1.PROJECT_NAME}...`);
}
await MigrationsService_1.MigrationsService.executeMigrations(absoluteProjectDir, currentVersion);
await SymlinkDependenciesService_1.SymlinkDependenciesService.executeSymlinking(absoluteProjectDir);
await PeerDependenciesService_1.PeerDependenciesService.executeResolution(absoluteProjectDir);
DuplicateDependenciesService_1.DuplicateDependenciesService.executeDeduplication(absoluteProjectDir);
console.info(`Installation done!`);
}