@platformatic/generators 1.37.1 → 1.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -4
- package/lib/base-generator.d.ts +0 -3
- package/lib/base-generator.js +30 -26
- package/lib/create-stackable-files.js +2 -2
- package/lib/stackable-generator.js +0 -1
- package/package.json +1 -1
- package/test/base-generator.test.js +28 -1
package/README.md
CHANGED
|
@@ -61,7 +61,3 @@ Called from `prepare` function. You have already access to the current `fastify`
|
|
|
61
61
|
#### `_afterPrepare`
|
|
62
62
|
|
|
63
63
|
Called at the end of `prepare` function body
|
|
64
|
-
|
|
65
|
-
#### `_generateEnv`
|
|
66
|
-
|
|
67
|
-
The `BaseGenerator` will create an empty `.env` file. In this function you can customize and append other values that may be needed. The values in `this.config.env` object will be automatically appended after this method is called.
|
package/lib/base-generator.d.ts
CHANGED
|
@@ -94,7 +94,6 @@ export namespace BaseGenerator {
|
|
|
94
94
|
setEnvVars(env?: Env): void
|
|
95
95
|
|
|
96
96
|
getDefaultConfig(): { [x: string]: JSONValue }
|
|
97
|
-
getDefaultEnv(): Env
|
|
98
97
|
|
|
99
98
|
getFastifyVersion(): Promise<string>
|
|
100
99
|
getPlatformaticVersion(): Promise<string>
|
|
@@ -119,8 +118,6 @@ export namespace BaseGenerator {
|
|
|
119
118
|
_beforePrepare(): Promise<void>
|
|
120
119
|
_afterPrepare(): Promise<void | JSONValue>
|
|
121
120
|
_getConfigFileContents(): Promise<{ [x: string]: BaseGenerator.JSONValue }>
|
|
122
|
-
_generateEnv(): Promise<void>
|
|
123
|
-
appendConfigEnv(): Promise<void>
|
|
124
121
|
|
|
125
122
|
postInstallActions(): Promise<void>
|
|
126
123
|
}
|
package/lib/base-generator.js
CHANGED
|
@@ -61,6 +61,7 @@ class BaseGenerator extends FileGenerator {
|
|
|
61
61
|
serviceName: '',
|
|
62
62
|
envPrefix: '',
|
|
63
63
|
env: {},
|
|
64
|
+
defaultEnv: {},
|
|
64
65
|
isUpdating: false
|
|
65
66
|
}
|
|
66
67
|
}
|
|
@@ -88,10 +89,6 @@ class BaseGenerator extends FileGenerator {
|
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
getDefaultEnv () {
|
|
92
|
-
return {}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
92
|
getEnvVarName (envVarName) {
|
|
96
93
|
const envVarPrefix = 'PLT_' + this.config.envPrefix + '_'
|
|
97
94
|
if (this.config.isRuntimeContext && !envVarName.startsWith(envVarPrefix)) {
|
|
@@ -112,10 +109,15 @@ class BaseGenerator extends FileGenerator {
|
|
|
112
109
|
|
|
113
110
|
addEnvVar (envVarName, envVarValue, opts = {}) {
|
|
114
111
|
opts.overwrite ??= true
|
|
112
|
+
opts.default ??= false
|
|
113
|
+
|
|
115
114
|
envVarName = this.getEnvVarName(envVarName)
|
|
116
115
|
if (opts.overwrite || !this.config.env[envVarName]) {
|
|
117
116
|
this.config.env[envVarName] = envVarValue
|
|
118
117
|
}
|
|
118
|
+
if ((opts.overwrite || !this.config.defaultEnv[envVarName]) && opts.default) {
|
|
119
|
+
this.config.defaultEnv[envVarName] = envVarValue
|
|
120
|
+
}
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
getEnvVar (envVarName) {
|
|
@@ -123,9 +125,10 @@ class BaseGenerator extends FileGenerator {
|
|
|
123
125
|
return this.config.env[envVarName]
|
|
124
126
|
}
|
|
125
127
|
|
|
126
|
-
setEnvVars (envVars) {
|
|
128
|
+
setEnvVars (envVars, opts) {
|
|
127
129
|
this.config.env = {}
|
|
128
|
-
this.
|
|
130
|
+
this.config.defaultEnv = {}
|
|
131
|
+
this.addEnvVars(envVars, opts)
|
|
129
132
|
}
|
|
130
133
|
|
|
131
134
|
setConfig (config) {
|
|
@@ -167,19 +170,6 @@ class BaseGenerator extends FileGenerator {
|
|
|
167
170
|
}
|
|
168
171
|
}
|
|
169
172
|
|
|
170
|
-
/* c8 ignore stop */
|
|
171
|
-
appendConfigEnv () {
|
|
172
|
-
const dotEnvFile = this.getFileObject('.env')
|
|
173
|
-
let dotEnvFileContents = dotEnvFile.contents
|
|
174
|
-
|
|
175
|
-
if (this.config.env) {
|
|
176
|
-
Object.entries(this.config.env).forEach((kv) => {
|
|
177
|
-
dotEnvFileContents += `${kv[0]}=${kv[1]}\n`
|
|
178
|
-
})
|
|
179
|
-
dotEnvFile.contents = dotEnvFileContents
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
173
|
async prepare () {
|
|
184
174
|
try {
|
|
185
175
|
this.reset()
|
|
@@ -416,20 +406,26 @@ class BaseGenerator extends FileGenerator {
|
|
|
416
406
|
|
|
417
407
|
async generateEnv () {
|
|
418
408
|
if (!this.config.isRuntimeContext) {
|
|
419
|
-
// generate an empty .env file
|
|
420
409
|
this.addFile({
|
|
421
410
|
path: '',
|
|
422
411
|
file: '.env',
|
|
423
|
-
contents:
|
|
412
|
+
contents: serializeEnvVars(this.config.env)
|
|
424
413
|
})
|
|
425
|
-
await this._generateEnv()
|
|
426
|
-
this.appendConfigEnv()
|
|
427
414
|
|
|
428
|
-
const
|
|
415
|
+
const emptyEnvVars = {}
|
|
416
|
+
for (const envVarName of Object.keys(this.config.env)) {
|
|
417
|
+
if (!this.config.defaultEnv[envVarName]) {
|
|
418
|
+
emptyEnvVars[envVarName] = ''
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
429
422
|
this.addFile({
|
|
430
423
|
path: '',
|
|
431
424
|
file: '.env.sample',
|
|
432
|
-
contents
|
|
425
|
+
contents: serializeEnvVars({
|
|
426
|
+
...this.config.defaultEnv,
|
|
427
|
+
...emptyEnvVars
|
|
428
|
+
})
|
|
433
429
|
})
|
|
434
430
|
}
|
|
435
431
|
}
|
|
@@ -501,7 +497,15 @@ class BaseGenerator extends FileGenerator {
|
|
|
501
497
|
async _beforePrepare () {}
|
|
502
498
|
async _afterPrepare () {}
|
|
503
499
|
async _getConfigFileContents () { return {} }
|
|
504
|
-
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
function serializeEnvVars (envVars) {
|
|
503
|
+
let envVarsString = ''
|
|
504
|
+
for (const envVarName of Object.keys(envVars)) {
|
|
505
|
+
const envVarValue = envVars[envVarName]
|
|
506
|
+
envVarsString += `${envVarName}=${envVarValue}\n`
|
|
507
|
+
}
|
|
508
|
+
return envVarsString
|
|
505
509
|
}
|
|
506
510
|
|
|
507
511
|
module.exports = BaseGenerator
|
|
@@ -193,7 +193,7 @@ class ${stackableGeneratorType} extends ServiceGenerator {
|
|
|
193
193
|
|
|
194
194
|
this.addEnvVars({
|
|
195
195
|
PLT_GREETING_TEXT: this.config.greeting ?? 'Hello world!'
|
|
196
|
-
}, { overwrite: false })
|
|
196
|
+
}, { overwrite: false, default: true })
|
|
197
197
|
|
|
198
198
|
const packageJson = await this.getStackablePackageJson()
|
|
199
199
|
|
|
@@ -301,7 +301,7 @@ class ${stackableGeneratorType} extends ServiceGenerator {
|
|
|
301
301
|
|
|
302
302
|
this.addEnvVars({
|
|
303
303
|
PLT_GREETING_TEXT: this.config.greeting ?? 'Hello world!'
|
|
304
|
-
}, { overwrite: false })
|
|
304
|
+
}, { overwrite: false, default: true })
|
|
305
305
|
|
|
306
306
|
const packageJson = await this.getStackablePackageJson()
|
|
307
307
|
|
package/package.json
CHANGED
|
@@ -95,6 +95,7 @@ test('setConfig', async (t) => {
|
|
|
95
95
|
staticWorkspaceGitHubActions: false,
|
|
96
96
|
dynamicWorkspaceGitHubActions: false,
|
|
97
97
|
env: {},
|
|
98
|
+
defaultEnv: {},
|
|
98
99
|
dependencies: {},
|
|
99
100
|
devDependencies: {},
|
|
100
101
|
isRuntimeContext: false,
|
|
@@ -123,6 +124,7 @@ test('setConfig', async (t) => {
|
|
|
123
124
|
staticWorkspaceGitHubActions: false,
|
|
124
125
|
dynamicWorkspaceGitHubActions: false,
|
|
125
126
|
env: {},
|
|
127
|
+
defaultEnv: {},
|
|
126
128
|
dependencies: {},
|
|
127
129
|
devDependencies: {},
|
|
128
130
|
isRuntimeContext: false,
|
|
@@ -143,6 +145,7 @@ test('setConfig', async (t) => {
|
|
|
143
145
|
staticWorkspaceGitHubActions: false,
|
|
144
146
|
dynamicWorkspaceGitHubActions: false,
|
|
145
147
|
env: {},
|
|
148
|
+
defaultEnv: {},
|
|
146
149
|
dependencies: {},
|
|
147
150
|
devDependencies: {},
|
|
148
151
|
isRuntimeContext: false,
|
|
@@ -171,6 +174,7 @@ test('setConfig', async (t) => {
|
|
|
171
174
|
staticWorkspaceGitHubActions: false,
|
|
172
175
|
dynamicWorkspaceGitHubActions: false,
|
|
173
176
|
env: {},
|
|
177
|
+
defaultEnv: {},
|
|
174
178
|
dependencies: {},
|
|
175
179
|
devDependencies: {},
|
|
176
180
|
isRuntimeContext: false,
|
|
@@ -197,7 +201,30 @@ test('should append env values', async (t) => {
|
|
|
197
201
|
assert.equal(dotEnvFile.contents.trim(), 'FOO=bar')
|
|
198
202
|
|
|
199
203
|
const dotEnvSampleFile = bg.getFileObject('.env.sample')
|
|
200
|
-
assert.equal(dotEnvSampleFile.contents.trim(), 'FOO=
|
|
204
|
+
assert.equal(dotEnvSampleFile.contents.trim(), 'FOO=')
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
test('should add a default env var to the .env.sample config', async (t) => {
|
|
208
|
+
const bg = new BaseGenerator({
|
|
209
|
+
module: '@platformatic/service'
|
|
210
|
+
})
|
|
211
|
+
// partial config with defaults
|
|
212
|
+
bg.setConfig({
|
|
213
|
+
env: {
|
|
214
|
+
FOO: 'bar'
|
|
215
|
+
}
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
bg.addEnvVars({
|
|
219
|
+
BAR: 'baz'
|
|
220
|
+
}, { overwrite: false, default: true })
|
|
221
|
+
|
|
222
|
+
await bg.prepare()
|
|
223
|
+
const dotEnvFile = bg.getFileObject('.env')
|
|
224
|
+
assert.equal(dotEnvFile.contents.trim(), 'FOO=bar\nBAR=baz')
|
|
225
|
+
|
|
226
|
+
const dotEnvSampleFile = bg.getFileObject('.env.sample')
|
|
227
|
+
assert.equal(dotEnvSampleFile.contents.trim(), 'BAR=baz\nFOO=')
|
|
201
228
|
})
|
|
202
229
|
|
|
203
230
|
test('should prepare the questions', async (t) => {
|