1const { resolve } = require('path')
2const { stat } = require('fs/promises')
3const { walkUp } = require('walk-up-path')
4
5const fileExists = async (file) => {
6  try {
7    const res = await stat(file)
8    return res.isFile()
9  } catch {
10    return false
11  }
12}
13
14const localFileExists = async (dir, binName, root) => {
15  for (const path of walkUp(dir)) {
16    const binDir = resolve(path, 'node_modules', '.bin')
17
18    if (await fileExists(resolve(binDir, binName))) {
19      return binDir
20    }
21
22    if (path.toLowerCase() === resolve(root).toLowerCase()) {
23      return false
24    }
25  }
26
27  return false
28}
29
30module.exports = {
31  fileExists,
32  localFileExists,
33}
34