Add support for glob syntax to config file env variables
This change allows loading config files using glob syntax, for exakple `production-*.yml` to load all config files prefixed with *production*. With this change the config file can also be configured using two additional env variables `SHARKEY_CONFIG_YML` and `SHARKEY_CONFIG_FILE`.
This commit is contained in:
parent
8b31c12607
commit
df7f4aa3ec
1 changed files with 20 additions and 7 deletions
|
@ -183,14 +183,27 @@ const _dirname = dirname(_filename);
|
|||
*/
|
||||
const dir = `${_dirname}/../../../.config`;
|
||||
|
||||
function buildPath() {
|
||||
const envVars = ['MISSKEY_CONFIG_YML', 'SHARKEY_CONFIG_YML', 'SHARKEY_CONFIG_FILE'];
|
||||
const envCfgFile = envVars
|
||||
.map(v => process.env[v])
|
||||
.map(v => v ? resolve(dir, v) : undefined)
|
||||
.find(v => !!v);
|
||||
|
||||
if (envCfgFile) {
|
||||
return envCfgFile;
|
||||
}
|
||||
if (process.env.NODE_ENV === 'test') {
|
||||
return resolve(dir, 'test.yml');
|
||||
}
|
||||
|
||||
return resolve(dir, 'default.yml');
|
||||
}
|
||||
|
||||
/**
|
||||
* Path of configuration file
|
||||
* Path of configuration file. Supports loading multiple files using glob syntax
|
||||
*/
|
||||
const cfgDir = process.env.MISSKEY_CONFIG_DIR
|
||||
? resolve(dir, process.env.MISSKEY_CONFIG_DIR)
|
||||
: process.env.NODE_ENV === 'test'
|
||||
? resolve(dir, './test/')
|
||||
: dir;
|
||||
const path = buildPath();
|
||||
|
||||
export function loadConfig(): Config {
|
||||
const meta = JSON.parse(fs.readFileSync(`${_dirname}/../../../built/meta.json`, 'utf-8'));
|
||||
|
@ -199,7 +212,7 @@ export function loadConfig(): Config {
|
|||
? JSON.parse(fs.readFileSync(`${_dirname}/../../../built/_vite_/manifest.json`, 'utf-8'))
|
||||
: { 'src/_boot_.ts': { file: 'src/_boot_.ts' } };
|
||||
|
||||
const config = globSync(`${cfgDir}/*.{yaml,yml}`)
|
||||
const config = globSync(path)
|
||||
.map(path => fs.readFileSync(path, 'utf-8'))
|
||||
.map(contents => yaml.load(contents) as Source)
|
||||
.reduce(
|
||||
|
|
Loading…
Reference in a new issue