1const {dirname} = require('path')
2
3const findMade = (opts, parent, path = undefined) => {
4  // we never want the 'made' return value to be a root directory
5  if (path === parent)
6    return Promise.resolve()
7
8  return opts.statAsync(parent).then(
9    st => st.isDirectory() ? path : undefined, // will fail later
10    er => er.code === 'ENOENT'
11      ? findMade(opts, dirname(parent), parent)
12      : undefined
13  )
14}
15
16const findMadeSync = (opts, parent, path = undefined) => {
17  if (path === parent)
18    return undefined
19
20  try {
21    return opts.statSync(parent).isDirectory() ? path : undefined
22  } catch (er) {
23    return er.code === 'ENOENT'
24      ? findMadeSync(opts, dirname(parent), parent)
25      : undefined
26  }
27}
28
29module.exports = {findMade, findMadeSync}
30