UNPKG

cmake-js

Version:

CMake.js - a Node.js native addon build tool

64 lines (61 loc) 2.03 kB
"use strict"; const path = require("path"); const isPlainObject = require("lodash.isplainobject"); function getConfig(lookPath, log) { const pjsonPath = path.join(lookPath, "package.json"); log.silly("CFG", "Looking for package.json in: '" + pjsonPath + "'."); try { const json = require(pjsonPath); log.silly("CFG", "Loaded:\n" + JSON.stringify(json)); if (isPlainObject(json) && isPlainObject(json["cmake-js"])) { log.silly("CFG", "Config found."); return json["cmake-js"]; } else { log.silly("CFG", "Config not found."); return null; } } catch (e) { log.silly("CFG", "'package.json' not found."); return null; } } module.exports = function (projectPath, log) { log.verbose("CFG", "Looking for application level CMake.js config in '" + projectPath + "."); let currPath = projectPath; let lastConfig = null; let currConfig; for (; ;) { currConfig = getConfig(currPath, log); if (currConfig) { lastConfig = currConfig; } try { log.silly("CFG", "Looking for parent path."); const lastPath = currPath; currPath = path.normalize(path.join(currPath, "..")); if (lastPath === currPath) { currPath = null; // root } if (currPath) { log.silly("CFG", "Parent path: '" + currPath + "'."); } } catch (e) { log.silly("CFG", "Exception:\n" + e.stack); break; } if (currPath === null) { log.silly("CFG", "Parent path with package.json file doesn't exists. Done."); break; } } if (lastConfig) { log.verbose("CFG", "Application level CMake.js config found:\n" + JSON.stringify(lastConfig)); } else { log.verbose("CFG", "Application level CMake.js config doesn't exists."); } return lastConfig; };