(options: CheckOptions)
| 16 | import { outputErr, renderPackages } from './render' |
| 17 | |
| 18 | export async function check(options: CheckOptions) { |
| 19 | let exitCode = 0 |
| 20 | const bars = options.loglevel === 'silent' ? null : createMultiProgressBar() |
| 21 | let packagesBar: SingleBar | undefined |
| 22 | const depBar = bars?.create(1, 0) |
| 23 | |
| 24 | let resolvePkgs: PackageMeta[] = [] |
| 25 | |
| 26 | const { packages } = await CheckPackages(options, { |
| 27 | afterPackagesLoaded(pkgs) { |
| 28 | packagesBar = (options.recursive && pkgs.length) |
| 29 | ? bars?.create(pkgs.length, 0, { type: c.cyan('pkg'), name: c.cyan(pkgs[0].name) }) |
| 30 | : undefined |
| 31 | |
| 32 | const totalDeps = pkgs.reduce((acc, pkg) => acc + pkg.deps.length, 0) |
| 33 | depBar?.start(totalDeps, 0, { type: c.green('dep'), name: '' }) |
| 34 | }, |
| 35 | beforePackageStart(pkg) { |
| 36 | packagesBar?.increment(0, { name: c.cyan(pkg.name) }) |
| 37 | }, |
| 38 | |
| 39 | beforePackageWrite() { |
| 40 | // disbale auto write |
| 41 | return false |
| 42 | }, |
| 43 | afterPackageEnd() { |
| 44 | packagesBar?.increment(1) |
| 45 | }, |
| 46 | afterPackagesEnd() { |
| 47 | depBar?.stop() |
| 48 | }, |
| 49 | onDependencyResolved(_pkgName, name, progress) { |
| 50 | depBar?.update(progress, { name }) |
| 51 | }, |
| 52 | }) |
| 53 | resolvePkgs = packages |
| 54 | |
| 55 | bars?.stop() |
| 56 | |
| 57 | if (options.interactive) |
| 58 | resolvePkgs = await promptInteractive(resolvePkgs, options) |
| 59 | |
| 60 | const { lines, errLines } = renderPackages(resolvePkgs, options) |
| 61 | |
| 62 | const hasChanges = resolvePkgs.length && resolvePkgs.some(i => i.resolved.some(j => j.update)) |
| 63 | if (!hasChanges) { |
| 64 | if (errLines.length) |
| 65 | outputErr(errLines) |
| 66 | else |
| 67 | console.log(c.green('dependencies are already up-to-date')) |
| 68 | |
| 69 | return exitCode |
| 70 | } |
| 71 | |
| 72 | console.log(lines.join('\n')) |
| 73 | |
| 74 | if (!options.all) { |
| 75 | const counter = resolvePkgs.reduce((counter, pkg) => { |
no test coverage detected
searching dependent graphs…