Extract ConfigReader to @rondo.dev/config pkg
This commit is contained in:
parent
ba45deda4f
commit
1bbc3ed97d
3
package-lock.json
generated
3
package-lock.json
generated
@ -2130,6 +2130,9 @@
|
|||||||
"@rondo.dev/common": {
|
"@rondo.dev/common": {
|
||||||
"version": "file:packages/common"
|
"version": "file:packages/common"
|
||||||
},
|
},
|
||||||
|
"@rondo.dev/config": {
|
||||||
|
"version": "file:packages/config"
|
||||||
|
},
|
||||||
"@rondo.dev/image-upload": {
|
"@rondo.dev/image-upload": {
|
||||||
"version": "file:packages/image-upload"
|
"version": "file:packages/image-upload"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -11,7 +11,8 @@
|
|||||||
"@rondo.dev/jsonrpc": "file:packages/jsonrpc",
|
"@rondo.dev/jsonrpc": "file:packages/jsonrpc",
|
||||||
"@rondo.dev/scripts": "file:packages/scripts",
|
"@rondo.dev/scripts": "file:packages/scripts",
|
||||||
"@rondo.dev/argparse": "file:packages/argparse",
|
"@rondo.dev/argparse": "file:packages/argparse",
|
||||||
"@rondo.dev/logger": "file:packages/logger"
|
"@rondo.dev/logger": "file:packages/logger",
|
||||||
|
"@rondo.dev/config": "file:packages/config"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bcrypt": "^3.0.0",
|
"@types/bcrypt": "^3.0.0",
|
||||||
|
|||||||
2
packages/config/config/default.yml
Normal file
2
packages/config/config/default.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
app:
|
||||||
|
name: 'config-test'
|
||||||
16
packages/config/jest.config.js
Normal file
16
packages/config/jest.config.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
module.exports = {
|
||||||
|
roots: [
|
||||||
|
'<rootDir>/src'
|
||||||
|
],
|
||||||
|
transform: {
|
||||||
|
'^.+\\.tsx?$': 'ts-jest'
|
||||||
|
},
|
||||||
|
testRegex: '(/__tests__/.*|\\.(test|spec))\\.tsx?$',
|
||||||
|
moduleFileExtensions: [
|
||||||
|
'ts',
|
||||||
|
'tsx',
|
||||||
|
'js',
|
||||||
|
'jsx'
|
||||||
|
],
|
||||||
|
setupFiles: ['<rootDir>/jest.setup.js']
|
||||||
|
}
|
||||||
4
packages/config/jest.setup.js
Normal file
4
packages/config/jest.setup.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
if (!process.env.LOG) {
|
||||||
|
process.env.LOG = 'sql:warn'
|
||||||
|
}
|
||||||
|
process.chdir(__dirname)
|
||||||
4
packages/config/package-lock.json
generated
Normal file
4
packages/config/package-lock.json
generated
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@rondo.dev/config",
|
||||||
|
"lockfileVersion": 1
|
||||||
|
}
|
||||||
13
packages/config/package.json
Normal file
13
packages/config/package.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "@rondo.dev/config",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"test": "jest",
|
||||||
|
"lint": "tslint --project .",
|
||||||
|
"compile": "tsc",
|
||||||
|
"clean": "rm -rf lib/"
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"main": "lib/index.js",
|
||||||
|
"types": "lib/index.d.ts"
|
||||||
|
}
|
||||||
@ -1,9 +1,9 @@
|
|||||||
|
import { readFileSync } from 'fs'
|
||||||
import YAML from 'js-yaml'
|
import YAML from 'js-yaml'
|
||||||
import {Config} from './Config'
|
import { join } from 'path'
|
||||||
import {findPackageRoot} from '../files/Find'
|
import { Config } from './Config'
|
||||||
import {join} from 'path'
|
import { findPackageRoot } from './findPackageRoot'
|
||||||
import {readFileSync} from 'fs'
|
import loggerFactory, {ILogger} from '@rondo.dev/logger'
|
||||||
import {apiLogger} from '../logger'
|
|
||||||
|
|
||||||
const isObject = (value: any) => value !== null && typeof value === 'object'
|
const isObject = (value: any) => value !== null && typeof value === 'object'
|
||||||
|
|
||||||
@ -14,8 +14,9 @@ export class ConfigReader {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
readonly path: string,
|
readonly path: string,
|
||||||
readonly cwd: string|undefined = process.cwd(),
|
readonly cwd: string | undefined = process.cwd(),
|
||||||
readonly environment = 'CONFIG',
|
readonly environment = 'CONFIG',
|
||||||
|
readonly logger: ILogger = loggerFactory.getLogger('config'),
|
||||||
) {
|
) {
|
||||||
const packageRoot = path && findPackageRoot(path)
|
const packageRoot = path && findPackageRoot(path)
|
||||||
this.locations = packageRoot ? [packageRoot] : []
|
this.locations = packageRoot ? [packageRoot] : []
|
||||||
@ -41,7 +42,7 @@ export class ConfigReader {
|
|||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
apiLogger.info('config: Found config file: %s', configFilename)
|
this.logger.info('config: Found config file: %s', configFilename)
|
||||||
success += 1
|
success += 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -52,12 +53,12 @@ export class ConfigReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (filename) {
|
if (filename) {
|
||||||
apiLogger.info('config: Reading extra config file: %s', filename)
|
this.logger.info('config: Reading extra config file: %s', filename)
|
||||||
this.readFile(filename)
|
this.readFile(filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (env) {
|
if (env) {
|
||||||
apiLogger.info('config: Parsing env variable: %s', this.environment)
|
this.logger.info('config: Parsing env variable: %s', this.environment)
|
||||||
this.parse(env)
|
this.parse(env)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import {resolve, join} from 'path'
|
import {resolve, join} from 'path'
|
||||||
import {statSync, Stats} from 'fs'
|
import {statSync, Stats} from 'fs'
|
||||||
|
|
||||||
export function findNearestDirectory(
|
function findNearestDirectory(
|
||||||
dir: string, filename: string,
|
dir: string, filename: string,
|
||||||
) {
|
) {
|
||||||
let currentDir = dir
|
let currentDir = dir
|
||||||
4
packages/config/src/index.ts
Normal file
4
packages/config/src/index.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export * from './Config'
|
||||||
|
|
||||||
|
import {ConfigReader} from './ConfigReader'
|
||||||
|
export default ConfigReader
|
||||||
10
packages/config/tsconfig.json
Normal file
10
packages/config/tsconfig.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"extends": "../tsconfig.common.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "lib",
|
||||||
|
"rootDir": "src"
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{"path": "../logger"}
|
||||||
|
]
|
||||||
|
}
|
||||||
10
packages/config/tslint.json
Normal file
10
packages/config/tslint.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"../tslint.json"
|
||||||
|
],
|
||||||
|
"linterOptions": {
|
||||||
|
"exclude": [
|
||||||
|
"src/migrations/*.ts"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
import {ConfigReader} from './config/index'
|
import ConfigReader from '@rondo.dev/config'
|
||||||
import {IConfig} from './application'
|
import {IConfig} from './application'
|
||||||
import URL from 'url'
|
import URL from 'url'
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +0,0 @@
|
|||||||
export * from './Config'
|
|
||||||
export * from './ConfigReader'
|
|
||||||
@ -1,5 +1,4 @@
|
|||||||
export * from './application'
|
export * from './application'
|
||||||
export * from './config/index'
|
|
||||||
export * from './database'
|
export * from './database'
|
||||||
export * from './entities'
|
export * from './entities'
|
||||||
export * from './error'
|
export * from './error'
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
"references": [
|
"references": [
|
||||||
{"path": "../common"},
|
{"path": "../common"},
|
||||||
{"path": "../jsonrpc"},
|
{"path": "../jsonrpc"},
|
||||||
{"path": "../logger"}
|
{"path": "../logger"},
|
||||||
|
{"path": "../config"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user