Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 1x 1x 1x 2x 2x 2x 1x | import path from "path"
import fs from "fs"
 
/**
 * With our code residing either in some src folder or in the `itsJustJavascript` folder, it's not
 * always straightforward to know where to find a config file like `.env`.
 * Here, we just traverse the directory tree upwards until we find a `package.json` file, which
 * should indicate that we have found the root directory of the `owid-grapher` repo.
 */
export default function findProjectBaseDir(from: string): string | undefined {
    if (!fs.existsSync) return undefined // if fs.existsSync doesn't exist, we're probably running in the browser
 
    let dir = path.dirname(from)
 
    while (dir.length) {
        if (fs.existsSync(path.resolve(dir, "package.json"))) return dir
 
        const parentDir = path.resolve(dir, "..")
        // break if we have reached the file system root
        if (parentDir === dir) break
        else dir = parentDir
    }
    return undefined
}
  |