xeira
Version:
One Web Dev stack tool to rule them all
58 lines (41 loc) • 1.49 kB
JavaScript
import {readJsonFileSync} from '../utils/json.mjs'
import defConfig from '../../configs/xeira.mjs'
import {getFilterPatternFromArgv,
getContextFolders,
getConfigFromArgv,
getFlyOptionsFromArgv } from './utils.mjs'
import { XeiraContext } from './XeiraContext.mjs'
function getXeiraContexts(folder, argv, aliases) {
const filterPattern= getFilterPatternFromArgv(argv, aliases)
const contextFolders= getContextFolders(folder, filterPattern)
const parentConfig= readJsonFileSync(`${folder}/xeira.json`, true)
const parentPkgJson= readJsonFileSync(`${folder}/package.json`)
let contexts= []
contextFolders.map(contextFolder => {
const pkgConfig= contextFolder!=folder
? readJsonFileSync(`${contextFolder}/xeira.json`, true)
: {}
const pkgJson= contextFolder!=folder
? readJsonFileSync(`${contextFolder}/package.json`)
: parentPkgJson
const mergedConfig= {
...defConfig,
...parentConfig,
...pkgConfig,
...getConfigFromArgv(argv || {}, aliases)
}
const options = getFlyOptionsFromArgv(argv, aliases)
const context= new XeiraContext(mergedConfig, contextFolder, pkgJson, options)
contexts.push(context)
})
return contexts
}
function makeXeiraContext(config, pkgPath) {
const pkgJson= readJsonFileSync(`${pkgPath}/package.json`)
const xeiraContext = new XeiraContext(config, pkgPath, pkgJson, {})
return xeiraContext
}
export {
getXeiraContexts,
makeXeiraContext
}