1
|
|
|
/* It initializes a git instance */ |
2
|
|
|
|
3
|
|
|
import { LogTarget } from '@/traits/HasLogger'; |
4
|
|
|
|
5
|
|
|
export interface AppSettings { |
6
|
|
|
github_token: string; |
7
|
|
|
repository_storage_path: string; |
8
|
|
|
boosts_path: string; |
9
|
|
|
use_forks: boolean; |
10
|
|
|
use_pull_requests: boolean; |
11
|
|
|
log_target: LogTarget | LogTarget[]; |
12
|
|
|
dry_run?: boolean; |
13
|
|
|
auto_merge_pull_requests?: boolean; |
14
|
|
|
} |
15
|
|
|
|
16
|
|
|
export function loadSettings(filename: string): AppSettings { |
17
|
|
|
return transformSettings(require(filename).default); |
18
|
|
|
} |
19
|
|
|
|
20
|
|
|
function loadLogTarget(settings) { |
21
|
|
|
if (!Array.isArray(settings.log_target)) { |
22
|
|
|
settings.log_target = [ settings.log_target ]; |
23
|
|
|
} |
24
|
|
|
|
25
|
|
|
settings.log_target = settings.log_target |
26
|
|
|
.map(target => <LogTarget>target.toLowerCase()) |
27
|
|
|
.filter((target: string) => [ 'console', 'file' ].includes(target)); |
28
|
|
|
|
29
|
|
|
return settings; |
30
|
|
|
} |
31
|
|
|
|
32
|
|
|
const isString = (value: any) => typeof value === 'string'; |
33
|
|
|
const isUndefined = (value: any) => typeof value === 'undefined'; |
34
|
|
|
const getEnvVar = (settings, key: string) => process.env[settings[key].slice(1)]; |
35
|
|
|
const setDefaultValue = (settings, key: string, value: any) => isUndefined(settings[key]) && (settings[key] = value); |
36
|
|
|
|
37
|
|
|
export function transformSettings(settings: AppSettings): AppSettings { |
38
|
|
|
// load settings from environment variable references starting with '$' |
39
|
|
|
Object.keys(settings) |
40
|
|
|
.filter(key => isString(settings[key]) && !!getEnvVar(settings, key)) |
41
|
|
|
.forEach(key => (settings[key] = getEnvVar(settings, key))); |
42
|
|
|
|
43
|
|
|
setDefaultValue(settings, 'dry_run', false); |
44
|
|
|
setDefaultValue(settings, 'auto_merge_pull_requests', false); |
45
|
|
|
|
46
|
|
|
settings.use_forks = settings.use_pull_requests ? settings.use_forks : false; |
47
|
|
|
|
48
|
|
|
return loadLogTarget(settings); |
49
|
|
|
} |
50
|
|
|
|