Add example nested network config
This commit is contained in:
parent
98e9d1a6c3
commit
ad6b146aa0
@ -1,4 +1,14 @@
|
||||
{
|
||||
"NETWORKS": {
|
||||
"TESTNET": {
|
||||
"ENABLED": true,
|
||||
"WEIGHT": "__NETWORKS_TESTNET_WEIGHT__"
|
||||
},
|
||||
"MAINNET": {
|
||||
"ENABLED": true,
|
||||
"WEIGHT": "__NETWORKS_MAINNET_WEIGHT__"
|
||||
}
|
||||
},
|
||||
"MEMPOOL": {
|
||||
"ENABLED": true,
|
||||
"OFFICIAL": false,
|
||||
|
@ -157,6 +157,17 @@ describe('Mempool Backend Config', () => {
|
||||
PAID: false,
|
||||
API_KEY: '',
|
||||
});
|
||||
|
||||
expect(config.NETWORKS).toStrictEqual({
|
||||
MAINNET: {
|
||||
ENABLED: true,
|
||||
WEIGHT: 'foo'
|
||||
},
|
||||
TESTNET: {
|
||||
ENABLED: false,
|
||||
WEIGHT: 'bar'
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
@ -190,6 +201,8 @@ describe('Mempool Backend Config', () => {
|
||||
expect(config.MEMPOOL_SERVICES).toStrictEqual(fixture.MEMPOOL_SERVICES);
|
||||
|
||||
expect(config.REDIS).toStrictEqual(fixture.REDIS);
|
||||
|
||||
expect(config.NETWORKS).toStrictEqual(fixture.NETWORKS);
|
||||
});
|
||||
});
|
||||
|
||||
@ -197,6 +210,22 @@ describe('Mempool Backend Config', () => {
|
||||
jest.isolateModules(() => {
|
||||
const startSh = fs.readFileSync(`${__dirname}/../../../docker/backend/start.sh`, 'utf-8');
|
||||
const fixture = JSON.parse(fs.readFileSync(`${__dirname}/../__fixtures__/mempool-config.template.json`, 'utf8'));
|
||||
|
||||
function generateKeys(obj, prefix = '') {
|
||||
let keys: string[] = [];
|
||||
|
||||
for (const key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
const newPrefix = prefix ? `${prefix}_${key}` : key;
|
||||
if (typeof obj[key] === 'object' && obj[key] !== null) {
|
||||
keys = keys.concat(generateKeys(obj[key], newPrefix));
|
||||
} else {
|
||||
keys.push(`${newPrefix}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
|
||||
function parseJson(jsonObj, root?) {
|
||||
for (const [key, value] of Object.entries(jsonObj)) {
|
||||
@ -208,6 +237,31 @@ describe('Mempool Backend Config', () => {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (root === 'NETWORKS') {
|
||||
const keys = generateKeys(value);
|
||||
keys.forEach(item => {
|
||||
const replaceStr = `__${root}_${key}_${item}__`;
|
||||
const envVarStr = `${root}_${key}_${item}`;
|
||||
|
||||
let defaultEntry = replaceStr + '=' + '\\${' + envVarStr + ':=(.*)' + '}';
|
||||
if (process.env.CI) {
|
||||
console.log(`looking for ${defaultEntry} in the start.sh script`);
|
||||
}
|
||||
|
||||
const re = new RegExp(defaultEntry);
|
||||
expect(startSh).toMatch(re);
|
||||
|
||||
const sedStr = 'sed -i "s!' + replaceStr + '!${' + replaceStr + '}!g" mempool-config.json';
|
||||
if (process.env.CI) {
|
||||
console.log(`looking for ${sedStr} in the start.sh script`);
|
||||
}
|
||||
expect(startSh).toContain(sedStr);
|
||||
|
||||
|
||||
});
|
||||
continue;
|
||||
}
|
||||
|
||||
if (root) {
|
||||
//The flattened string, i.e, __MEMPOOL_ENABLED__
|
||||
const replaceStr = `${root ? '__' + root + '_' : '__'}${key}__`;
|
||||
@ -264,6 +318,8 @@ describe('Mempool Backend Config', () => {
|
||||
const replaceStr = `${root ? '__' + root + '_' : '__'}${key}__`;
|
||||
expect(dockerJson).toContain(`"${key}": ${replaceStr}`);
|
||||
break;
|
||||
} else if (typeof value === 'object') {
|
||||
break;
|
||||
} else {
|
||||
//Check for top level config keys
|
||||
expect(dockerJson).toContain(`"${key}"`);
|
||||
|
@ -160,6 +160,16 @@ interface IConfig {
|
||||
PAID: boolean;
|
||||
API_KEY: string;
|
||||
},
|
||||
NETWORKS: {
|
||||
MAINNET: {
|
||||
ENABLED: boolean;
|
||||
WEIGHT: 'foo';
|
||||
},
|
||||
TESTNET: {
|
||||
ENABLED: boolean;
|
||||
WEIGHT: 'bar'
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const defaults: IConfig = {
|
||||
@ -320,6 +330,16 @@ const defaults: IConfig = {
|
||||
'PAID': false,
|
||||
'API_KEY': '',
|
||||
},
|
||||
'NETWORKS': {
|
||||
'MAINNET': {
|
||||
'ENABLED': true,
|
||||
'WEIGHT': 'foo',
|
||||
},
|
||||
'TESTNET': {
|
||||
'ENABLED': false,
|
||||
'WEIGHT': 'bar'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class Config implements IConfig {
|
||||
@ -341,6 +361,7 @@ class Config implements IConfig {
|
||||
MEMPOOL_SERVICES: IConfig['MEMPOOL_SERVICES'];
|
||||
REDIS: IConfig['REDIS'];
|
||||
FIAT_PRICE: IConfig['FIAT_PRICE'];
|
||||
NETWORKS: IConfig['NETWORKS'];
|
||||
|
||||
constructor() {
|
||||
const configs = this.merge(configFromFile, defaults);
|
||||
@ -362,6 +383,7 @@ class Config implements IConfig {
|
||||
this.MEMPOOL_SERVICES = configs.MEMPOOL_SERVICES;
|
||||
this.REDIS = configs.REDIS;
|
||||
this.FIAT_PRICE = configs.FIAT_PRICE;
|
||||
this.NETWORKS = configs.NETWORKS;
|
||||
}
|
||||
|
||||
merge = (...objects: object[]): IConfig => {
|
||||
|
@ -155,5 +155,15 @@
|
||||
"ENABLED": __FIAT_PRICE_ENABLED__,
|
||||
"PAID": __FIAT_PRICE_PAID__,
|
||||
"API_KEY": "__FIAT_PRICE_API_KEY__"
|
||||
},
|
||||
"NETWORKS": {
|
||||
"MAINNET": {
|
||||
"ENABLED": __NETWORKS_MAINNET_ENABLED__,
|
||||
"WEIGHT": "__NETWORKS_MAINNET_WEIGHT__,"
|
||||
},
|
||||
"TESTNET": {
|
||||
"ENABLED": __NETWORKS_TESTNET_ENABLED__,
|
||||
"WEIGHT": "__NETWORKS_TESTNET_WEIGHT__"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -157,6 +157,12 @@ __FIAT_PRICE_ENABLED__=${FIAT_PRICE_ENABLED:=true}
|
||||
__FIAT_PRICE_PAID__=${FIAT_PRICE_PAID:=false}
|
||||
__FIAT_PRICE_API_KEY__=${FIAT_PRICE_API_KEY:=""}
|
||||
|
||||
# NETWORKS
|
||||
__NETWORKS_TESTNET_ENABLED__=${NETWORKS_TESTNET_ENABLED:=true}
|
||||
__NETWORKS_TESTNET_WEIGHT__=${NETWORKS_TESTNET_WEIGHT:="0.1"}
|
||||
__NETWORKS_MAINNET_ENABLED__=${NETWORKS_MAINNET_ENABLED:=true}
|
||||
__NETWORKS_MAINNET_WEIGHT__=${NETWORKS_MAINNET_WEIGHT:="0.2"}
|
||||
|
||||
mkdir -p "${__MEMPOOL_CACHE_DIR__}"
|
||||
|
||||
sed -i "s!__MEMPOOL_NETWORK__!${__MEMPOOL_NETWORK__}!g" mempool-config.json
|
||||
@ -306,4 +312,10 @@ sed -i "s!__FIAT_PRICE_ENABLED__!${__FIAT_PRICE_ENABLED__}!g" mempool-config.jso
|
||||
sed -i "s!__FIAT_PRICE_PAID__!${__FIAT_PRICE_PAID__}!g" mempool-config.json
|
||||
sed -i "s!__FIAT_PRICE_API_KEY__!${__FIAT_PRICE_API_KEY__}!g" mempool-config.json
|
||||
|
||||
# NETWORKS
|
||||
sed -i "s!__NETWORKS_TESTNET_ENABLED__!${__NETWORKS_TESTNET_ENABLED__}!g" mempool-config.json
|
||||
sed -i "s!__NETWORKS_TESTNET_WEIGHT__!${__NETWORKS_TESTNET_WEIGHT__}!g" mempool-config.json
|
||||
sed -i "s!__NETWORKS_MAINNET_ENABLED__!${__NETWORKS_MAINNET_ENABLED__}!g" mempool-config.json
|
||||
sed -i "s!__NETWORKS_MAINNET_WEIGHT__!${__NETWORKS_MAINNET_WEIGHT__}!g" mempool-config.json
|
||||
|
||||
node /backend/package/index.js
|
||||
|
Loading…
x
Reference in New Issue
Block a user