-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathsetup.js
More file actions
137 lines (113 loc) · 4.14 KB
/
setup.js
File metadata and controls
137 lines (113 loc) · 4.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
const prompts = require('prompts')
const yaml = require('yaml')
const fs = require('fs')
const serverPath = './packages/server/'
const clientPath = './packages/client/'
const dbDockerFile = serverPath + 'docker-compose.yml'
const defaultDbDockerFile = serverPath + 'docker-compose.default.yml'
const ormConfigFile = serverPath + 'ormconfig.json'
const defaultOrmConfigFile = serverPath + 'ormconfig.default.json'
const serverConfigFile = serverPath + 'server-config.json'
const defaultServerConfigFile = serverPath + 'server-config.default.json'
const clientConfigFile = clientPath + '/src/config/client-config.json'
const defaultClientConfigFile = clientPath + 'client-config.default.json'
const defaultDbSettings = yaml.parse(
fs.readFileSync(defaultDbDockerFile, { encoding: 'utf8' })
)
const defaultOrmSettings = JSON.parse(
fs.readFileSync(defaultOrmConfigFile, { encoding: 'utf8' })
)
const defaultServerSettings = JSON.parse(
fs.readFileSync(defaultServerConfigFile, { encoding: 'utf8' })
)
const defaultClientSettings = JSON.parse(
fs.readFileSync(defaultClientConfigFile, { encoding: 'utf8' })
)
const initialized =
fs.existsSync(dbDockerFile) &&
fs.existsSync(ormConfigFile) &&
fs.existsSync(serverConfigFile) &&
fs.existsSync(clientConfigFile)
let dbSettings = fs.existsSync(dbDockerFile)
? yaml.parse(fs.readFileSync(dbDockerFile, { encoding: 'utf8' }))
: defaultDbSettings
let ormSettings = fs.existsSync(ormConfigFile)
? JSON.parse(fs.readFileSync(ormConfigFile, { encoding: 'utf8' }))
: defaultOrmSettings
let serverSettings = fs.existsSync(serverConfigFile)
? JSON.parse(fs.readFileSync(serverConfigFile, { encoding: 'utf8' }))
: defaultServerSettings
let clientSettings = fs.existsSync(clientConfigFile)
? JSON.parse(fs.readFileSync(clientConfigFile, { encoding: 'utf8' }))
: defaultClientSettings
const questions = [
{
type: initialized ? 'confirm' : null,
name: 'reset',
message: 'Do you want to reset all settings to defaults?',
initial: false
},
{
type: 'number',
name: 'serverPort',
message: 'Set port for server app',
initial: (prev, values) =>
values.reset
? defaultServerSettings.serverPort
: serverSettings.serverPort
},
{
type: 'number',
name: 'databasePort',
message: 'Set port for database',
initial: (prev, values) =>
values.reset ? defaultOrmSettings.port : ormSettings.port
},
{
type: 'number',
name: 'clientPort',
message: 'Set port for client app',
initial: (prev, values) =>
values.reset
? defaultClientSettings.clientPort
: clientSettings.clientPort
}
]
;(async () => {
console.log('Polkalert setup')
let resetArg = process.argv.indexOf('--reset') !== -1
let updateArg = process.argv.indexOf('--update') !== -1
let response = { serverPort: null, databasePort: null, reset: null }
if (!resetArg && !updateArg) {
response = await prompts(questions)
console.log(response)
}
let { clientPort, serverPort, databasePort, reset } = response
if (reset || resetArg) {
serverSettings = defaultServerSettings
ormSettings = defaultOrmSettings
dbSettings = defaultDbSettings
clientSettings = defaultClientSettings
} else if (updateArg) {
serverSettings = Object.assign(defaultServerSettings, serverSettings)
ormSettings = Object.assign(defaultOrmSettings, ormSettings)
dbSettings = Object.assign(defaultDbSettings, dbSettings)
clientSettings = Object.assign(defaultClientSettings, clientSettings)
}
if (serverPort) {
clientSettings.serverPort = serverPort
serverSettings.serverPort = serverPort
}
if (databasePort) {
ormSettings.port = databasePort
dbSettings.services['monitor-db'].ports = [databasePort + ':5432']
dbSettings.services['monitor-db'].expose = [databasePort]
}
if (clientPort) {
clientSettings.clientPort = clientPort
}
fs.writeFileSync(dbDockerFile, yaml.stringify(dbSettings, null, 2))
fs.writeFileSync(ormConfigFile, JSON.stringify(ormSettings, null, 2))
fs.writeFileSync(serverConfigFile, JSON.stringify(serverSettings, null, 2))
fs.writeFileSync(clientConfigFile, JSON.stringify(clientSettings, null, 2))
})()