UNPKG

sardines-compile-time-tools

Version:

sardines.compile-time-tools.js is part of the sardines.io project

73 lines (58 loc) 2.56 kB
/** * @author Robin Sun * @email robin@naturewake.com * @create date 2019-08-04 11:48:04 * @modify date 2019-08-04 11:48:04 * @desc [description] */ import * as path from 'path' import * as fs from 'fs' import { Sardines } from 'sardines-core' export const readSardinesConfigFile = (sardinesConfigFile: string):Sardines.Config => { if (!fs.existsSync(sardinesConfigFile)) { throw(`Sardines configure file [${sardinesConfigFile}] does not exist`) } if (!fs.lstatSync(sardinesConfigFile).isFile()) { throw(`Sardines configure file [${sardinesConfigFile}] is invalid`) } if (path.extname(sardinesConfigFile).toLowerCase() !== '.json') { throw(`Sardines configure file [${sardinesConfigFile}] must in JSON format`) } let sardinesConfig:Sardines.Config|null = null try { sardinesConfig = JSON.parse(fs.readFileSync(sardinesConfigFile).toString()) } catch (e) { throw(`Sardines configure file [${sardinesConfigFile}] has broken`) } // Check content if (!sardinesConfig || JSON.stringify(sardinesConfig) === JSON.stringify({})) { throw(`Sardines configure file [${sardinesConfigFile}] is empty`) } if (!sardinesConfig.application || typeof sardinesConfig.application !== 'string') { throw(`Application name is missing in sardines configure file [${sardinesConfigFile}]`) } if (!sardinesConfig.repositoryEntries || !Array.isArray(sardinesConfig.repositoryEntries) || sardinesConfig.repositoryEntries.length === 0){ throw(`Repository entries are missing in sardines configure file [${sardinesConfigFile}]`) } if (sardinesConfig.srcRootDir && typeof sardinesConfig.srcRootDir !== 'string') { throw(`srcRootDir is wrong in sardines configure file [${sardinesConfigFile}]`) } if (sardinesConfig.sardinesDir && typeof sardinesConfig.sardinesDir !== 'string') { throw(`sardinesDir is wrong in sardines configure file [${sardinesConfigFile}]`) } // Default values if (!sardinesConfig.srcRootDir) sardinesConfig.srcRootDir = './src' if (!sardinesConfig.sardinesDir) sardinesConfig.sardinesDir = 'sardines' for (let entry of sardinesConfig.repositoryEntries) { if (!entry.user && !entry.password ) entry.password = 'anonymous' if (!entry.user) entry.user = 'anonymous' } // if (!sardinesConfig.drivers || !sardinesConfig.drivers.length) { // sardinesConfig.drivers = [{ // name: 'sardines-service-driver-http', // locationType: Sardines.LocationType.npm, // protocols: ['http', 'https'] // }] // } return sardinesConfig! }