Files
pnpm/src/api/storeStatus.ts
zkochan 69d5bb4dd6 refactor: use @pnpm/logger instead of pnpm-logger
BREAKING CHANGE: peer dependencies updated
2017-11-10 22:01:23 +02:00

35 lines
1.1 KiB
TypeScript

import path = require('path')
import pFilter = require('p-filter')
import {PnpmOptions} from '../types'
import extendOptions from './extendOptions'
import getContext from './getContext'
import {pkgIsUntouched as untouched} from 'package-store'
import * as dp from 'dependency-path'
import {streamParser} from '@pnpm/logger'
export default async function (maybeOpts: PnpmOptions) {
const reporter = maybeOpts && maybeOpts.reporter
if (reporter) {
streamParser.on('data', reporter)
}
const opts = await extendOptions(maybeOpts)
const ctx = await getContext(opts)
if (!ctx.wantedShrinkwrap) return []
const pkgPaths = Object.keys(ctx.wantedShrinkwrap.packages || {})
.map(id => {
if (id === '/') return null
return dp.resolve(ctx.wantedShrinkwrap.registry, id)
})
.filter(pkgId => pkgId && !ctx.skipped.has(pkgId))
.map((pkgPath: string) => path.join(ctx.storePath, pkgPath))
const modified = await pFilter(pkgPaths, async (pkgPath: string) => !await untouched(path.join(pkgPath, 'package')))
if (reporter) {
streamParser.removeListener('data', reporter)
}
return modified
}