UNPKG

syncpack

Version:

Consistent dependency versions in large JavaScript Monorepos

19 lines (18 loc) 1.08 kB
import { Effect, flow, pipe } from 'effect'; import { getPackageJsonFiles } from '../get-package-json-files/index.js'; import { readConfigFile } from '../io/read-config-file.js'; import { keyBy } from './lib/key-by.js'; export function getContext({ io, cli, errorHandlers, }) { const exitOnError = Effect.flatMap(() => Effect.failSync(() => io.process.exit(1))); return pipe(Effect.Do, Effect.bind('rcFile', () => readConfigFile(io, cli.configPath)), Effect.bind('packageJsonFiles', ({ rcFile }) => getPackageJsonFiles(io, { cli, rcFile })), Effect.map(({ rcFile, packageJsonFiles }) => ({ config: { cli, rcFile }, isInvalid: false, packageJsonFiles, packageJsonFilesByName: keyBy('name', packageJsonFiles), })), Effect.catchTags({ GlobError: flow(errorHandlers.GlobError, exitOnError), JsonParseError: flow(errorHandlers.JsonParseError, exitOnError), NoSourcesFoundError: flow(errorHandlers.NoSourcesFoundError, exitOnError), ReadFileError: flow(errorHandlers.ReadFileError, exitOnError), })); }