Skip to content

Commit 8024c6c

Browse files
committed
refactor: use env-var to get cofnig
1 parent e38e2f0 commit 8024c6c

3 files changed

Lines changed: 44 additions & 28 deletions

File tree

package-lock.json

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"start": "cross-env NODE_PRODUTION=true node dist/source/index.js",
1212
"start-withsnapshot": "cross-env NODE_PRODUTION=true node --heapsnapshot-signal=SIGUSR2 dist/source/index.js",
1313
"dev": "node $NODE_DEBUG_OPTIONS dist/source/index",
14-
"test": "cross-env RSSBOT_DB_PATH=test/test-data/test.db npx jest --verbose",
14+
"test": "cross-env RSSBOT_DB_PATH=test/test-data/test.db RSSBOT_TOKEN=1 npx jest --verbose",
1515
"pretty-quick": "pretty-quick --staged",
1616
"format": "eslint \"source/**/*.{js,ts}\" --fix && prettier \"**/*.{js,ts,json,md}\" --write",
1717
"lint": "eslint \"source/**/*.{js,ts}\" && prettier-check \"**/*.{js,ts,json,md}\" && npm run lint-lockfile",
@@ -39,6 +39,7 @@
3939
"clean-stack": "^3.0.1",
4040
"cross-env": "^7.0.3",
4141
"ejs": "^3.1.6",
42+
"env-var": "^7.0.0",
4243
"escape-goat": "^3.0.0",
4344
"fastq": "^1.11.0",
4445
"got-iconv": "^2.1.0",

source/config.ts

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,47 @@
11
import * as path from 'path';
22
import { Config } from './types/config';
33
import { version } from '../package.json';
4+
import env from 'env-var';
45

56
const PKGROOT = path.join(
67
__dirname,
78
__dirname.includes('dist') ? '../..' : '..'
89
);
910
export const config: Config = {
10-
token: process.env.RSSBOT_TOKEN || '',
11+
token: env.get('RSSBOT_TOKEN').required().asString(),
1112
proxy: {
12-
protocol: process.env.PROXY_PROTOCOL || null,
13-
host: process.env.PROXY_HOST || null,
14-
port: process.env.PROXY_PORT || null
13+
protocol: env.get('PROXY_PROTOCOL').asString(),
14+
host: env.get('PROXY_HOST').asString(),
15+
port: env.get('PROXY_PORT').asString()
1516
},
1617
db_path:
1718
(process.env.DYNO // heroku
1819
? process.env.DATABASE_URL
1920
: process.env.RSSBOT_DB_PATH) ||
2021
path.join(PKGROOT, 'data', 'database.db'), // /dist/source/config.js -> /data/
21-
lang: process.env.RSSBOT_LANG || 'zh-cn',
22-
item_num: parseInt(process.env.RSSBOT_ITEM_NUM) || 10,
23-
fetch_gap: process.env.RSSBOT_FETCH_GAP || '5m',
24-
strict_ttl:
25-
process.env.RSSBOT_STRICT_TTL !== '0' &&
26-
process.env.RSSBOT_STRICT_TTL !== 'false',
27-
http_cache: !!process.env.RSSBOT_HTTP_CACHE || false,
28-
notify_error_count: parseInt(process.env.NOTIFY_ERR_COUNT) || 5,
29-
view_all: !!process.env.RSSBOT_VIEW_ALL || false,
30-
UA:
31-
process.env.RSSBOT_UA ||
32-
`Mozilla/5.0 NodeRSSBot v${version}(https://github.com/fengkx/NodeRSSBot)`,
33-
not_send: !!process.env.NOT_SEND || false, // just for debug use
34-
concurrency: parseInt(process.env.RSSBOT_CONCURRENCY) || 200,
35-
delete_on_err_send:
36-
process.env.DELETE_ON_ERR_SEND !== '0' &&
37-
process.env.DELETE_ON_ERR_SEND !== 'false', // block and chat not found
38-
resp_timeout: parseInt(process.env.RSSBOT_RESP_TIMEOUT) || 40,
39-
allow_list: process.env.RSSBOT_ALLOW_LIST
40-
? process.env.RSSBOT_ALLOW_LIST.split(',').map((id) => Number(id))
41-
: null,
42-
auto_migrate:
43-
process.env.AUTO_MIGRATE !== '0' && process.env.AUTO_MIGRATE !== 'false'
22+
lang: env.get('RSSBOT_LANG').default('zh-cn').asString(),
23+
item_num: env.get('RSSBOT_ITEM_NUM').default(10).asIntPositive(),
24+
fetch_gap: env.get('RSSBOT_FETCH_GAP').default('5m').asString(),
25+
strict_ttl: env.get('RSSBOT_STRICT_TTL').default(1).asBool(),
26+
http_cache: env.get('RSSBOT_HTTP_CACHE').default(0).asBool(),
27+
notify_error_count: env.get('NOTIFY_ERR_COUNT').default(5).asIntPositive(),
28+
view_all: env.get('RSSBOT_VIEW_ALL').default(0).asBool(),
29+
UA: env
30+
.get('RSSBOT_UA')
31+
.default(
32+
`Mozilla/5.0 NodeRSSBot v${version}(https://github.com/fengkx/NodeRSSBot)`
33+
)
34+
.asString(),
35+
not_send: env.get('NOT_SEND').default(0).asBool(), // just for debug use
36+
concurrency: env.get('RSSBOT_CONCURRENCY').default(200).asIntPositive(),
37+
delete_on_err_send: env.get('DELETE_ON_ERR_SEND').default(1).asBool(), // block and chat not found
38+
resp_timeout: env.get('RSSBOT_RESP_TIMEOUT').default(40).asIntPositive(),
39+
allow_list: env
40+
.get('RSSBOT_ALLOW_LIST')
41+
.default('')
42+
.asArray(',')
43+
.map((id) => Number(id)),
44+
auto_migrate: env.get('AUTO_MIGRATE').default(1).asBool()
4445
};
4546
Object.defineProperty(config, 'PKG_ROOT', {
4647
enumerable: false,

0 commit comments

Comments
 (0)