UNPKG

@boostercloud/cli

Version:

CLI of the Booster Framework, the next level of abstraction for cloud-native applications

38 lines (37 loc) 1.83 kB
"use strict"; 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);