@boostercloud/cli
Version:
CLI of the Booster Framework, the next level of abstraction for cloud-native applications
38 lines (37 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LivePackageManager = exports.InferredPackageManager = void 0;
const file_system_1 = require("../file-system");
const process_1 = require("../process");
const _1 = require(".");
const effect_1 = require("@boostercloud/framework-types/dist/effect");
const rush_impl_1 = require("./rush.impl");
const pnpm_impl_1 = require("./pnpm.impl");
const yarn_impl_1 = require("./yarn.impl");
const npm_impl_1 = require("./npm.impl");
const live_impl_1 = require("../file-system/live.impl");
const live_impl_2 = require("../process/live.impl");
const inferPackageManagerNameFromDirectoryContents = (0, effect_1.gen)(function* ($) {
const { cwd } = yield* $(process_1.ProcessService);
const { readDirectoryContents } = yield* $(file_system_1.FileSystemService);
const workingDir = yield* $(cwd());
const contents = yield* $(readDirectoryContents(workingDir));
if (contents.includes('.rush')) {
return yield* $(rush_impl_1.makeRushPackageManager);
}
else if (contents.includes('pnpm-lock.yaml')) {
return yield* $(pnpm_impl_1.makePnpmPackageManager);
}
else if (contents.includes('yarn.lock')) {
return yield* $(yarn_impl_1.makeYarnPackageManager);
}
else if (contents.includes('package-lock.json')) {
return yield* $(npm_impl_1.makeNpmPackageManager);
}
else {
// Infer npm by default
return yield* $(npm_impl_1.makeNpmPackageManager);
}
});
exports.InferredPackageManager = effect_1.Layer.fromEffect(_1.PackageManagerService)((0, effect_1.orDie)(inferPackageManagerNameFromDirectoryContents));
exports.LivePackageManager = effect_1.Layer.using(effect_1.Layer.all(live_impl_1.LiveFileSystem, live_impl_2.LiveProcess))(exports.InferredPackageManager);