UNPKG

@dry-software/cmake-js

Version:

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

59 lines (56 loc) 1.61 kB
'use strict' const path = require('path') 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 (json && json['cmake-js'] && typeof json['cmake-js'] === 'object') { 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 }