@axinom/mosaic-cli 0.17.0 → 0.18.0-rc.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/dist/commands/apply-templates/apply-templates.d.ts +4 -3
- package/dist/commands/apply-templates/apply-templates.js +47 -23
- package/dist/commands/apply-templates/apply-templates.js.map +1 -1
- package/dist/commands/pg-dump/generate.js +6 -16
- package/dist/commands/pg-dump/generate.js.map +1 -1
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.js +5 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/utils.d.ts +4 -0
- package/dist/common/utils.js +16 -0
- package/dist/common/utils.js.map +1 -0
- package/package.json +4 -4
- package/src/commands/apply-templates/apply-templates.spec.ts +97 -73
- package/src/commands/apply-templates/apply-templates.ts +64 -22
- package/src/commands/pg-dump/generate.ts +1 -12
- package/src/common/index.ts +1 -0
- package/src/common/utils.ts +11 -0
|
@@ -8,6 +8,7 @@ export interface ApplyTemplatesOptions {
|
|
|
8
8
|
verbose: boolean;
|
|
9
9
|
replace: boolean;
|
|
10
10
|
bitwardenUrl: string | undefined;
|
|
11
|
+
commentObsolete: boolean;
|
|
11
12
|
}
|
|
12
13
|
export interface DiffResult {
|
|
13
14
|
result: 'created' | 'same' | 'different' | 'differentLayout';
|
|
@@ -22,7 +23,7 @@ export declare class ConfigTransform {
|
|
|
22
23
|
readonly target: string;
|
|
23
24
|
constructor(template: string, target: string);
|
|
24
25
|
readonly targetExists: boolean;
|
|
25
|
-
compare(_: boolean, __: boolean): DiffResult;
|
|
26
|
+
compare(_: boolean, __: boolean, ___: boolean): DiffResult;
|
|
26
27
|
writeTarget(): void;
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
@@ -34,8 +35,8 @@ export declare class EnvConfigTransform extends ConfigTransform {
|
|
|
34
35
|
private newContent?;
|
|
35
36
|
private readTemplate;
|
|
36
37
|
private mergeContent;
|
|
37
|
-
compare(replace: boolean, verbose: boolean): DiffResult;
|
|
38
|
+
compare(replace: boolean, verbose: boolean, commentObsolete: boolean): DiffResult;
|
|
38
39
|
writeTarget(): void;
|
|
39
40
|
}
|
|
40
41
|
export declare function getEnvConfigTransforms(template: string): string[];
|
|
41
|
-
export declare function transformComparison(transform: ConfigTransform, replace: boolean, verbose: boolean): DiffResult['result'];
|
|
42
|
+
export declare function transformComparison(transform: ConfigTransform, replace: boolean, verbose: boolean, commentObsolete: boolean): DiffResult['result'];
|
|
@@ -12,6 +12,7 @@ const glob = require("glob");
|
|
|
12
12
|
const path = require("path");
|
|
13
13
|
const readline = require("readline");
|
|
14
14
|
const yargs = require("yargs");
|
|
15
|
+
const common_1 = require("../../common");
|
|
15
16
|
const bitwarden_vault_1 = require("./bitwarden-vault");
|
|
16
17
|
exports.applyTemplates = {
|
|
17
18
|
command: 'apply-templates',
|
|
@@ -66,6 +67,13 @@ exports.applyTemplates = {
|
|
|
66
67
|
"Placeholders must be in the form: <BITWARDEN_{itemName::fieldName}> where fieldname can be 'username', 'password', or the name of a custom field.",
|
|
67
68
|
default: undefined,
|
|
68
69
|
hidden: true,
|
|
70
|
+
})
|
|
71
|
+
.option('commentObsolete', {
|
|
72
|
+
alias: 'co',
|
|
73
|
+
type: 'boolean',
|
|
74
|
+
describe: 'Comments out all variables that are no longer in the template.',
|
|
75
|
+
default: false,
|
|
76
|
+
boolean: true,
|
|
69
77
|
}),
|
|
70
78
|
handler: compareTemplates,
|
|
71
79
|
};
|
|
@@ -78,7 +86,7 @@ class ConfigTransform {
|
|
|
78
86
|
this.target = target;
|
|
79
87
|
this.targetExists = (0, fs_1.existsSync)(this.target);
|
|
80
88
|
}
|
|
81
|
-
compare(_, __) {
|
|
89
|
+
compare(_, __, ___) {
|
|
82
90
|
const templateContent = (0, fs_1.readFileSync)(this.template).toString();
|
|
83
91
|
const targetContent = (0, fs_1.readFileSync)(this.target).toString();
|
|
84
92
|
const diff = Diff.diffLines(targetContent, templateContent);
|
|
@@ -119,41 +127,55 @@ class EnvConfigTransform extends ConfigTransform {
|
|
|
119
127
|
return value !== null && value !== void 0 ? value : match;
|
|
120
128
|
});
|
|
121
129
|
}
|
|
122
|
-
mergeContent(templateContent, targetContent) {
|
|
123
|
-
const
|
|
130
|
+
mergeContent(templateContent, targetContent, commentObsolete) {
|
|
131
|
+
const templateVars = envfile.parse(templateContent);
|
|
124
132
|
const targetVars = envfile.parse(targetContent);
|
|
125
|
-
|
|
133
|
+
const optionalCommentTag = commentObsolete ? '# ' : '';
|
|
134
|
+
let mergedContent = targetContent;
|
|
126
135
|
let additionalContent = '';
|
|
136
|
+
for (const [k, v] of Object.entries(templateVars)) {
|
|
137
|
+
// if template variable is not in the .env file - append it at the end
|
|
138
|
+
if (!(k in targetVars)) {
|
|
139
|
+
additionalContent += `${envfile.stringify({ [k]: v })}`;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
127
142
|
for (const [k, v] of Object.entries(targetVars)) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
143
|
+
if (!(k in templateVars)) {
|
|
144
|
+
// Handle obsolete variables in the existing .env file
|
|
145
|
+
// Add a comment (if not already present) that the variable is obsolete
|
|
146
|
+
// Comment the variable out if explicit flag is provided
|
|
147
|
+
const lineRegex = new RegExp(`(?<=(\n|^))${k}=`);
|
|
148
|
+
const line = targetContent.match(lineRegex);
|
|
149
|
+
const obsoleteVarDescription = `# Variable ${k} is not a part of the template.\n`;
|
|
150
|
+
const prefixToAttach = mergedContent.includes(obsoleteVarDescription)
|
|
151
|
+
? ''
|
|
152
|
+
: obsoleteVarDescription;
|
|
153
|
+
mergedContent = mergedContent.replace(lineRegex, prefixToAttach + optionalCommentTag + (line === null || line === void 0 ? void 0 : line[0]));
|
|
131
154
|
}
|
|
132
|
-
else if (
|
|
155
|
+
else if (templateVars[k] !== v) {
|
|
133
156
|
const commentRegex = new RegExp(`(?<=(\n|^))#${k}=`);
|
|
134
157
|
const commented = targetContent.match(commentRegex);
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
mergedContent = mergedContent.replace(new RegExp(`(?<=(\n|^))${k}=.*?(\r?\n|$)`), commentPrefix + envfile.stringify({ [k]: vars[k], [k]: v }));
|
|
158
|
+
// if there is no dedicated comment for variable to preserve custom
|
|
159
|
+
// value, template value is not a placeholder, and template value is not
|
|
160
|
+
// empty - .env variable value is outdated and replaced with template value
|
|
161
|
+
if (!commented &&
|
|
162
|
+
!isPlaceholder(templateVars[k]) &&
|
|
163
|
+
templateVars[k] !== '') {
|
|
164
|
+
mergedContent = mergedContent.replace(new RegExp(`(?<=(\n|^))${k}=.*?(\r?\n|$)`), envfile.stringify({ [k]: templateVars[k] }));
|
|
143
165
|
}
|
|
144
166
|
}
|
|
145
167
|
}
|
|
146
168
|
if (additionalContent !== '') {
|
|
147
|
-
mergedContent += `\n
|
|
169
|
+
mergedContent += `\n# ${(0, common_1.getTimestamp)()} Newly added variables:\n${additionalContent}`;
|
|
148
170
|
}
|
|
149
171
|
return mergedContent;
|
|
150
172
|
}
|
|
151
|
-
compare(replace, verbose) {
|
|
173
|
+
compare(replace, verbose, commentObsolete) {
|
|
152
174
|
const templateContent = this.readTemplate();
|
|
153
175
|
const targetContent = (0, fs_1.readFileSync)(this.target).toString();
|
|
154
176
|
this.newContent = replace
|
|
155
177
|
? templateContent
|
|
156
|
-
: this.mergeContent(templateContent, targetContent);
|
|
178
|
+
: this.mergeContent(templateContent, targetContent, commentObsolete);
|
|
157
179
|
// set the #@TARGET prefix line
|
|
158
180
|
this.newContent = setDefinedTemplate(this.newContent, path.basename(this.template));
|
|
159
181
|
const changed = this.newContent !== targetContent;
|
|
@@ -206,7 +228,7 @@ function compareTemplates(options) {
|
|
|
206
228
|
? getEnvConfigTransforms(template).map((target) => new EnvConfigTransform(template, target, bitwardenVault))
|
|
207
229
|
: [new ConfigTransform(template, defaultTargetFor(template))];
|
|
208
230
|
for (const transform of transforms) {
|
|
209
|
-
const resultKey = transformComparison(transform, options.replace, options.verbose);
|
|
231
|
+
const resultKey = transformComparison(transform, options.replace, options.verbose, options.commentObsolete);
|
|
210
232
|
results[resultKey].push(transform);
|
|
211
233
|
}
|
|
212
234
|
}
|
|
@@ -258,7 +280,9 @@ function compareTemplates(options) {
|
|
|
258
280
|
}
|
|
259
281
|
}
|
|
260
282
|
function setDefinedTemplate(targetText, templateName) {
|
|
261
|
-
return
|
|
283
|
+
return getDefinedTemplate(targetText)
|
|
284
|
+
? targetText
|
|
285
|
+
: `#@TEMPLATE = ${path.basename(templateName)}\n` + targetText;
|
|
262
286
|
}
|
|
263
287
|
function getDefinedTemplate(targetText) {
|
|
264
288
|
const match = targetText.match(/^#\s*@TEMPLATE\s*=(.+)/);
|
|
@@ -297,13 +321,13 @@ exports.getEnvConfigTransforms = getEnvConfigTransforms;
|
|
|
297
321
|
* If target file doesn't exist then create it.
|
|
298
322
|
* If both exist and there are differences, return 'different' and do nothing.
|
|
299
323
|
*/
|
|
300
|
-
function transformComparison(transform, replace, verbose) {
|
|
324
|
+
function transformComparison(transform, replace, verbose, commentObsolete) {
|
|
301
325
|
if (!transform.targetExists) {
|
|
302
326
|
transform.writeTarget();
|
|
303
327
|
console.log(`Target file ${transform.target} did not exist and has been created.`);
|
|
304
328
|
return 'created';
|
|
305
329
|
}
|
|
306
|
-
const { result, diff } = transform.compare(replace, verbose);
|
|
330
|
+
const { result, diff } = transform.compare(replace, verbose, commentObsolete);
|
|
307
331
|
if (result === 'same') {
|
|
308
332
|
if (verbose) {
|
|
309
333
|
console.log((0, chalk_1.gray)(`File ${transform.target} has no changes.`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-templates.js","sourceRoot":"","sources":["../../../src/commands/apply-templates/apply-templates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apply-templates.js","sourceRoot":"","sources":["../../../src/commands/apply-templates/apply-templates.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,+BAA+B;AAC/B,iCAA2E;AAC3E,6BAA6B;AAC7B,mCAAmC;AACnC,yBAAyB;AACzB,2BAA2E;AAC3E,6BAA6B;AAC7B,6BAA6B;AAC7B,qCAAqC;AACrC,+BAA+B;AAE/B,yCAA4C;AAC5C,uDAA0D;AAiB7C,QAAA,cAAc,GAAkD;IAC3E,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EACN,gDAAgD;QAChD,iFAAiF;QACjF,IAAI;QACJ,6HAA6H;QAC7H,wEAAwE;QACxE,8DAA8D;QAC9D,iFAAiF;QACjF,IAAI;QACJ,0HAA0H;QAC1H,0HAA0H;QAC1H,kHAAkH;IACpH,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,MAAM,CAAC,MAAM,EAAE;QACd,KAAK,EAAE,GAAG;QACV,QAAQ,EACN,gHAAgH;QAClH,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;KACd,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,QAAQ,EACN,0EAA0E;QAC5E,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;KACd,CAAC;SACD,MAAM,CAAC,IAAI,EAAE;QACZ,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,0CAA0C;QACpD,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;KACd,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,yCAAyC;QACnD,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;KACd,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,QAAQ,EACN,+EAA+E;QACjF,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;KACd,CAAC;SACD,MAAM,CAAC,cAAc,EAAE;QACtB,IAAI,EAAE,QAAQ;QACd,QAAQ,EACN,wFAAwF;YACxF,sHAAsH;YACtH,mJAAmJ;QACrJ,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,IAAI;KACb,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE;QACzB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,SAAS;QACf,QAAQ,EACN,gEAAgE;QAClE,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;KACd,CAAC;IACN,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAa,eAAe;IAC1B,YACkB,QAAgB,EAChB,MAAc;QADd,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAE9B,IAAI,CAAC,YAAY,GAAG,IAAA,eAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAID,OAAO,CAAC,CAAU,EAAE,EAAW,EAAE,GAAY;QAC3C,MAAM,eAAe,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/D,MAAM,aAAa,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;YAC7C,IAAI;SACL,CAAC;IACJ,CAAC;IAED,WAAW;QACT,IAAA,iBAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;CACF;AAxBD,0CAwBC;AAED;;GAEG;AACH,MAAa,kBAAmB,SAAQ,eAAe;IACrD,YAAY,QAAgB,EAAE,MAAc,EAAE,cAAsB;QAClE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAKO,YAAY;QAClB,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,cAAc,KAAK,SAAS;YACtC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,OAAO,CACb,+BAA+B,EAC/B,CAAC,KAAa,EAAE,UAAkB,EAAE,EAAE;;gBACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC9B,OAAO,CAAC,IAAI,CACV,IAAA,cAAM,EACJ,yDAAyD,KAAK,OAAO,IAAI,CAAC,QAAQ,GAAG,CACtF,CACF,CAAC;oBACF,OAAO,KAAK,CAAC;iBACd;gBACD,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,cAAc,0CAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC7D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,CAAA,EAAE;oBACtD,OAAO,CAAC,IAAI,CACV,IAAA,cAAM,EACJ,+DAA+D,KAAK,OAAO,IAAI,CAAC,QAAQ,GAAG,CAC5F,CACF,CAAC;iBACH;gBACD,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,KAAK,CAAC;YACxB,CAAC,CACF,CAAC;IACR,CAAC;IAEO,YAAY,CAClB,eAAuB,EACvB,aAAqB,EACrB,eAAwB;QAExB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,aAAa,GAAG,aAAa,CAAC;QAClC,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACjD,sEAAsE;YACtE,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE;gBACtB,iBAAiB,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACzD;SACF;QAED,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC/C,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE;gBACxB,sDAAsD;gBACtD,uEAAuE;gBACvE,wDAAwD;gBACxD,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,sBAAsB,GAAG,cAAc,CAAC,mCAAmC,CAAC;gBAClF,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,sBAAsB,CAAC;oBACnE,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,sBAAsB,CAAC;gBAC3B,aAAa,GAAG,aAAa,CAAC,OAAO,CACnC,SAAS,EACT,cAAc,GAAG,kBAAkB,IAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,CAAA,CAChD,CAAC;aACH;iBAAM,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBAChC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACpD,mEAAmE;gBACnE,wEAAwE;gBACxE,2EAA2E;gBAC3E,IACE,CAAC,SAAS;oBACV,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC/B,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,EACtB;oBACA,aAAa,GAAG,aAAa,CAAC,OAAO,CACnC,IAAI,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,EAC1C,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5C,CAAC;iBACH;aACF;SACF;QAED,IAAI,iBAAiB,KAAK,EAAE,EAAE;YAC5B,aAAa,IAAI,OAAO,IAAA,qBAAY,GAAE,4BAA4B,iBAAiB,EAAE,CAAC;SACvF;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,CACL,OAAgB,EAChB,OAAgB,EAChB,eAAwB;QAExB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,OAAO;YACvB,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAEvE,+BAA+B;QAC/B,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAClC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC7B,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,aAAa,CAAC;QAClD,IAAI,IAAI,GAAG,EAAmB,CAAC;QAC/B,IAAI,OAAO,EAAE;YACX,oCAAoC;YACpC,IAAI,GAAG,IAAI,CAAC,SAAS,CACnB,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAC3D,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAC9D,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;SACvC;QACD,MAAM,MAAM,GAAG,CAAC,OAAO;YACrB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;gBACjB,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,iBAAiB,CAAC;QACtB,IAAI,MAAM,KAAK,MAAM,IAAI,OAAO,EAAE;YAChC,yBAAyB;YACzB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACvD;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;;QACT,IAAA,kBAAa,EACX,IAAI,CAAC,MAAM,EACX,MAAA,IAAI,CAAC,UAAU;QACb,+CAA+C;QAC/C,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CACzD,CAAC;IACJ,CAAC;CACF;AA7ID,gDA6IC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAA8B;IAOtD,MAAM,OAAO,GAAY;QACvB,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,MAAM,cAAc,GAClB,OAAO,CAAC,YAAY,KAAK,SAAS;QAChC,CAAC,CAAC,IAAI,gCAAc,CAAC,OAAO,CAAC,YAAY,CAAC;QAC1C,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,aAAa,GAAG,GAAG,OAAO,CAAC,IAAI,aAAa,CAAC;IACnD,IAAI,CACF,aAAa,EACb,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAC3C,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;QACjB,IAAI,GAAG,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,KAAK;gBACtB,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAClC,CAAC,MAAM,EAAE,EAAE,CACT,IAAI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAC3D;gBACH,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAClC,MAAM,SAAS,GAAG,mBAAmB,CACnC,SAAS,EACT,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,eAAe,CACxB,CAAC;gBACF,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC;SACF;QACD,MAAM,KAAK,GACT,OAAO,CAAC,OAAO,CAAC,MAAM;YACtB,OAAO,CAAC,IAAI,CAAC,MAAM;YACnB,OAAO,CAAC,SAAS,CAAC,MAAM;YACxB,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC;QACjC,OAAO,CAAC,GAAG,CACT,SAAS,KAAK,iBAAiB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KACnD,OAAO,CAAC,OAAO,CAAC,MAClB,eACE,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAC5C,aACE,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,MACrD,eACE,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;YAC7D,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,MACN,UAAU,CACX,CAAC;QACF,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,MAAK,SAAS,EAAE;YACvC,OAAO,CAAC,IAAI,CACV,IAAA,cAAM,EACJ,sDAAsD,cAAc,CAAC,KAAK,EAAE,CAC7E,CACF,CAAC;SACH;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YACnE,aAAa,EAAE,CAAC;SACjB;IACH,CAAC,CACF,CAAC;IAEF,SAAS,aAAa;QACpB,IAAI,OAAO,CAAC,GAAG,EAAE;YACf,gBAAgB,EAAE,CAAC;YACnB,OAAO;SACR;aAAM,IAAI,OAAO,CAAC,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;SACR;QACD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CACT,IAAA,cAAM,EACJ,8HAA8H,CAC/H,CACF,CAAC;QACF,EAAE,CAAC,QAAQ,CACT,IAAA,kBAAU,EAAC,iDAAiD,CAAC,EAC7D,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,MAAM,KAAK,GAAG,EAAE;gBAClB,gBAAgB,EAAE,CAAC;aACpB;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;aACrC;YACD,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CACF,CAAC;IACJ,CAAC;IAED,SAAS,gBAAgB;QACvB,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QACtE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,QAAQ,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YACrE,SAAS,CAAC,WAAW,EAAE,CAAC;SACzB;QACD,OAAO,CAAC,GAAG,CACT,sBAAsB,UAAU,CAAC,MAAM,QACrC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAClC,GAAG,CACJ,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB,EAAE,YAAoB;IAClE,OAAO,kBAAkB,CAAC,UAAU,CAAC;QACnC,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnD,wCAAwC;IACxC,KAAK,MAAM,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;QAC1C,0DAA0D;QAC1D,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/C,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACrD,sEAAsE;YACtE,8DAA8D;YAC9D,IACE,eAAe,KAAK,YAAY;gBAChC,CAAC,CAAC,eAAe,IAAI,QAAQ,KAAK,iBAAiB,CAAC,EACpD;gBACA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;SACF;KACF;IACD,+EAA+E;IAC/E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;QACzD,OAAO,CAAC,aAAa,CAAC,CAAC;KACxB;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AA5BD,wDA4BC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,SAA0B,EAC1B,OAAgB,EAChB,OAAgB,EAChB,eAAwB;IAExB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;QAC3B,SAAS,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CACT,eAAe,SAAS,CAAC,MAAM,sCAAsC,CACtE,CAAC;QACF,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC9E,IAAI,MAAM,KAAK,MAAM,EAAE;QACrB,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,QAAQ,SAAS,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC;SAC/D;QACD,OAAO,MAAM,CAAC;KACf;IACD,OAAO,CAAC,GAAG,CACT,IAAA,kBAAU,EACR,QAAQ,SAAS,CAAC,MAAM,cAAc;QACpC,CAAC,SAAS,CAAC,MAAM,KAAK,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC;YACxD,CAAC,CAAC,oBAAoB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,GAAG,CACjD,CACF,CAAC;IAEF,IAAI,MAAM,KAAK,iBAAiB,IAAI,CAAC,OAAO,EAAE;QAC5C,OAAO,CAAC,GAAG,CACT,IAAA,YAAI,EAAC,yDAAyD,CAAC,CAChE,CAAC;QACF,OAAO,MAAM,CAAC;KACf;IAED,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,MAAM,CAAC;AAChB,CAAC;AAxCD,kDAwCC;AAED,SAAS,YAAY,CAAC,IAAmB;IACvC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,qDAAqD;QACrD,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACzC,KAAK,IAAI,IAAI,CAAC;SACf;QACD,MAAM,KAAK,GAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAG,CAAC,CAAC,CAAC,aAAK,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;KACpC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB;AACrD,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,gDAAgD;IAChD,OAAO,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAClE,CAAC;AAED,+BAA+B;AAC/B,SAAS,UAAU,CAAI,SAA4B;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1B,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnB,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAED,kFAAkF;AAClF,yFAAyF;AACzF,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAC3B,KAAK,CAAC,OAAO,CAAC,sBAAc,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;CACpD"}
|
|
@@ -6,6 +6,7 @@ const chalk = require("chalk");
|
|
|
6
6
|
const child_process_1 = require("child_process");
|
|
7
7
|
const fs_1 = require("fs");
|
|
8
8
|
const path_1 = require("path");
|
|
9
|
+
const common_1 = require("../../common");
|
|
9
10
|
/**
|
|
10
11
|
* Calculates a path to `docker-compose.yaml` file based on initial path.
|
|
11
12
|
* For example, if `scripts/infra` is provided as initial path, it will look for `scripts/infra/docker-compose.yml` in current folder, then in folder one hierarchy level up, traversing directories towards root.
|
|
@@ -61,20 +62,9 @@ const ensureDumpDirectoryExist = (targetPath) => {
|
|
|
61
62
|
}
|
|
62
63
|
return dbSchemaExportPath;
|
|
63
64
|
};
|
|
64
|
-
/**
|
|
65
|
-
* Returns a readable timestamp in current locale time, e.g. `[2021-05-13 13:02:12.685]`
|
|
66
|
-
*/
|
|
67
|
-
const getTimestamp = () => {
|
|
68
|
-
const offset = new Date().getTimezoneOffset() * 60000; //offset in milliseconds
|
|
69
|
-
const localISOTime = new Date(Date.now() - offset)
|
|
70
|
-
.toISOString()
|
|
71
|
-
.slice(0, -1)
|
|
72
|
-
.replace('T', ' ');
|
|
73
|
-
return `[${localISOTime}]`;
|
|
74
|
-
};
|
|
75
65
|
const generate = (options) => {
|
|
76
66
|
try {
|
|
77
|
-
console.log(getTimestamp(), `Starting pg-dump command...`);
|
|
67
|
+
console.log((0, common_1.getTimestamp)(), `Starting pg-dump command...`);
|
|
78
68
|
const composePath = findComposePath(options.composeFolderPath);
|
|
79
69
|
const connectionString = getDumpDbConnectionString(options.connectionString);
|
|
80
70
|
const dumpPath = ensureDumpDirectoryExist(options.dumpPath);
|
|
@@ -92,19 +82,19 @@ const generate = (options) => {
|
|
|
92
82
|
].join(' ');
|
|
93
83
|
(0, child_process_1.exec)(`cd ${composePath} && docker-compose exec -T postgres pg_dump ${dumpOptions} > ${dumpPath}`, (_error, stdout, stderr) => {
|
|
94
84
|
if (stdout) {
|
|
95
|
-
console.log(getTimestamp(), 'pg_dump info:', stdout);
|
|
85
|
+
console.log((0, common_1.getTimestamp)(), 'pg_dump info:', stdout);
|
|
96
86
|
}
|
|
97
87
|
if (stderr) {
|
|
98
|
-
console.log(getTimestamp(), chalk.red('Command failed:'), stderr.trim());
|
|
88
|
+
console.log((0, common_1.getTimestamp)(), chalk.red('Command failed:'), stderr.trim());
|
|
99
89
|
}
|
|
100
90
|
else {
|
|
101
|
-
console.log(getTimestamp(), chalk.green('Success:'), `Database schema dump created at '${chalk.blueBright(options.dumpPath)}'`);
|
|
91
|
+
console.log((0, common_1.getTimestamp)(), chalk.green('Success:'), `Database schema dump created at '${chalk.blueBright(options.dumpPath)}'`);
|
|
102
92
|
}
|
|
103
93
|
});
|
|
104
94
|
}
|
|
105
95
|
catch (err) {
|
|
106
96
|
(0, mosaic_service_common_1.assertError)(err);
|
|
107
|
-
console.log(getTimestamp(), chalk.red('Command failed:'), err.message);
|
|
97
|
+
console.log((0, common_1.getTimestamp)(), chalk.red('Command failed:'), err.message);
|
|
108
98
|
}
|
|
109
99
|
};
|
|
110
100
|
exports.generate = generate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/pg-dump/generate.ts"],"names":[],"mappings":";;;AAAA,yEAMuC;AACvC,+BAA+B;AAC/B,iDAAoD;AACpD,2BAA2C;AAC3C,+BAA0D;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/pg-dump/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './utils';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";;;AAAA,uDAAwB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTimestamp = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Returns a readable timestamp in current locale time, e.g. `[2021-05-13 13:02:12.685]`
|
|
6
|
+
*/
|
|
7
|
+
const getTimestamp = () => {
|
|
8
|
+
const offset = new Date().getTimezoneOffset() * 60000; //offset in milliseconds
|
|
9
|
+
const localISOTime = new Date(Date.now() - offset)
|
|
10
|
+
.toISOString()
|
|
11
|
+
.slice(0, -1)
|
|
12
|
+
.replace('T', ' ');
|
|
13
|
+
return `[${localISOTime}]`;
|
|
14
|
+
};
|
|
15
|
+
exports.getTimestamp = getTimestamp;
|
|
16
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,MAAM,YAAY,GAAG,GAAW,EAAE;IACvC,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC,wBAAwB;IAC/E,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;SAC/C,WAAW,EAAE;SACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACZ,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,OAAO,IAAI,YAAY,GAAG,CAAC;AAC7B,CAAC,CAAC;AAPW,QAAA,YAAY,gBAOvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axinom/mosaic-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0-rc.0",
|
|
4
4
|
"description": "The Axinom Mosaic CLI",
|
|
5
5
|
"author": "Axinom",
|
|
6
6
|
"license": "PROPRIETARY",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@asyncapi/diff": "^0.4.0",
|
|
34
34
|
"@asyncapi/modelina": "^0.43.0",
|
|
35
35
|
"@asyncapi/parser": "^1.15.0",
|
|
36
|
-
"@axinom/mosaic-id-link-be": "^0.12.
|
|
37
|
-
"@axinom/mosaic-service-common": "^0.29.
|
|
36
|
+
"@axinom/mosaic-id-link-be": "^0.12.1-rc.1",
|
|
37
|
+
"@axinom/mosaic-service-common": "^0.29.1-rc.1",
|
|
38
38
|
"@graphql-inspector/core": "^3.1.2",
|
|
39
39
|
"@stoplight/spectral": "^5.9.1",
|
|
40
40
|
"chalk": "^4.1.0",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"publishConfig": {
|
|
66
66
|
"access": "public"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "4c902a0a3c6106b63b8e4a0dee30d510dc9eea89"
|
|
69
69
|
}
|
|
@@ -19,6 +19,10 @@ jest.mock('fs', () => ({
|
|
|
19
19
|
readdirSync: jest.fn((_) => Object.keys(mockFiles)),
|
|
20
20
|
}));
|
|
21
21
|
|
|
22
|
+
jest.mock('../../common/utils', () => ({
|
|
23
|
+
getTimestamp: jest.fn(() => '[2023-03-14 10:33:52.223]'),
|
|
24
|
+
}));
|
|
25
|
+
|
|
22
26
|
class MockVault implements Vault {
|
|
23
27
|
constructor(
|
|
24
28
|
private values: Record<string, string> = {
|
|
@@ -70,11 +74,9 @@ describe('applyTemplates', () => {
|
|
|
70
74
|
saveEnv('1.env', template, prefix);
|
|
71
75
|
|
|
72
76
|
// Act
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
false,
|
|
77
|
-
);
|
|
77
|
+
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
78
|
+
const result = transformComparison(transform, false, false, false);
|
|
79
|
+
transform.writeTarget();
|
|
78
80
|
|
|
79
81
|
// Assert
|
|
80
82
|
expect(result).toBe('same');
|
|
@@ -91,11 +93,9 @@ describe('applyTemplates', () => {
|
|
|
91
93
|
saveEnv('1.env.template', template);
|
|
92
94
|
|
|
93
95
|
// Act
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
false,
|
|
98
|
-
);
|
|
96
|
+
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
97
|
+
const result = transformComparison(transform, false, false, false);
|
|
98
|
+
transform.writeTarget();
|
|
99
99
|
|
|
100
100
|
// Assert
|
|
101
101
|
expect(result).toBe('created');
|
|
@@ -112,7 +112,9 @@ describe('applyTemplates', () => {
|
|
|
112
112
|
'VAR4=<BITWARDEN_{placeholder}>\n' +
|
|
113
113
|
'VAR5=<BITWARDEN_{placeholder}>\n' +
|
|
114
114
|
'VAR6=\n' +
|
|
115
|
-
'
|
|
115
|
+
'# new template comment\n' + // ignored
|
|
116
|
+
'VAR7=\n' +
|
|
117
|
+
'VAR9=new-template-value';
|
|
116
118
|
const target =
|
|
117
119
|
'VAR1=1\n' +
|
|
118
120
|
'VAR2=Old value\n' +
|
|
@@ -120,14 +122,16 @@ describe('applyTemplates', () => {
|
|
|
120
122
|
'VAR3=Custom value\n' +
|
|
121
123
|
'VAR4=Placeholder replaced\n' +
|
|
122
124
|
'VAR6=Blank value replaced\n' +
|
|
123
|
-
'VAR8=My new value\n'
|
|
125
|
+
'VAR8=My new value\n' +
|
|
126
|
+
'#VAR9=old-template-value\n' +
|
|
127
|
+
'VAR9=custom-value\n';
|
|
124
128
|
const prefix = '#@TEMPLATE = 1.env.template\n';
|
|
125
129
|
writeFileSync('1.env.template', template);
|
|
126
130
|
writeFileSync('1.env', target, prefix);
|
|
127
131
|
|
|
128
132
|
// Act
|
|
129
133
|
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
130
|
-
const result = transformComparison(transform, false, false);
|
|
134
|
+
const result = transformComparison(transform, false, false, false);
|
|
131
135
|
transform.writeTarget();
|
|
132
136
|
|
|
133
137
|
// Assert
|
|
@@ -139,13 +143,38 @@ describe('applyTemplates', () => {
|
|
|
139
143
|
'#VAR3=3\n' +
|
|
140
144
|
'VAR3=Custom value\n' +
|
|
141
145
|
'VAR4=Placeholder replaced\n' +
|
|
142
|
-
'VAR5=<BITWARDEN_{placeholder}>\n' +
|
|
143
146
|
'VAR6=Blank value replaced\n' +
|
|
144
|
-
'
|
|
145
|
-
'\n' +
|
|
147
|
+
'# Variable VAR8 is not a part of the template.\n' +
|
|
148
|
+
'VAR8=My new value\n' +
|
|
149
|
+
'#VAR9=old-template-value\n' +
|
|
150
|
+
'VAR9=custom-value\n' +
|
|
146
151
|
'\n' +
|
|
147
|
-
'#
|
|
148
|
-
'
|
|
152
|
+
'# [2023-03-14 10:33:52.223] Newly added variables:\n' +
|
|
153
|
+
'VAR5=<BITWARDEN_{placeholder}>\n' +
|
|
154
|
+
'VAR7=\n',
|
|
155
|
+
);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
it('target with differences and commentObsolete option -> different, non-template variables commented', () => {
|
|
159
|
+
// Arrange
|
|
160
|
+
const template = 'VAR1=1\n';
|
|
161
|
+
const target = 'VAR1=1\n' + 'VAR8=My new value\n';
|
|
162
|
+
const prefix = '#@TEMPLATE = 1.env.template\n';
|
|
163
|
+
writeFileSync('1.env.template', template);
|
|
164
|
+
writeFileSync('1.env', target, prefix);
|
|
165
|
+
|
|
166
|
+
// Act
|
|
167
|
+
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
168
|
+
const result = transformComparison(transform, false, false, true);
|
|
169
|
+
transform.writeTarget();
|
|
170
|
+
|
|
171
|
+
// Assert
|
|
172
|
+
expect(result).toBe('different');
|
|
173
|
+
expect(readFileSync('1.env').toString()).toEqual(
|
|
174
|
+
prefix +
|
|
175
|
+
'VAR1=1\n' +
|
|
176
|
+
'# Variable VAR8 is not a part of the template.\n' +
|
|
177
|
+
'# VAR8=My new value\n',
|
|
149
178
|
);
|
|
150
179
|
});
|
|
151
180
|
|
|
@@ -174,7 +203,7 @@ describe('applyTemplates', () => {
|
|
|
174
203
|
|
|
175
204
|
// Act
|
|
176
205
|
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
177
|
-
const result = transformComparison(transform, true, false);
|
|
206
|
+
const result = transformComparison(transform, true, false, false);
|
|
178
207
|
transform.writeTarget();
|
|
179
208
|
|
|
180
209
|
// Assert
|
|
@@ -182,7 +211,7 @@ describe('applyTemplates', () => {
|
|
|
182
211
|
expect(readFileSync('1.env').toString()).toEqual(prefix + template);
|
|
183
212
|
});
|
|
184
213
|
|
|
185
|
-
it('comment changes ->
|
|
214
|
+
it('comment changes -> same', () => {
|
|
186
215
|
// Arrange
|
|
187
216
|
const template =
|
|
188
217
|
'# some comment\n' +
|
|
@@ -190,8 +219,9 @@ describe('applyTemplates', () => {
|
|
|
190
219
|
'# a new comment\n' +
|
|
191
220
|
'BAR=2\n' +
|
|
192
221
|
'FOO=3';
|
|
222
|
+
const prefix = '#@TEMPLATE = 1.env.template\n';
|
|
193
223
|
const target0 =
|
|
194
|
-
|
|
224
|
+
prefix +
|
|
195
225
|
'# some slightly different comment\n' +
|
|
196
226
|
'BLAH=1\n' +
|
|
197
227
|
'BAR=2\n' +
|
|
@@ -200,27 +230,26 @@ describe('applyTemplates', () => {
|
|
|
200
230
|
writeFileSync('1.env', target0);
|
|
201
231
|
|
|
202
232
|
// Act
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
false,
|
|
207
|
-
);
|
|
233
|
+
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
234
|
+
const result = transformComparison(transform, false, false, false);
|
|
235
|
+
transform.writeTarget();
|
|
208
236
|
|
|
209
237
|
// Assert
|
|
210
|
-
expect(result).toBe('
|
|
238
|
+
expect(result).toBe('same');
|
|
211
239
|
expect(readFileSync('1.env.template').toString()).toEqual(template);
|
|
212
240
|
expect(readFileSync('1.env').toString()).toEqual(target0);
|
|
213
241
|
});
|
|
214
242
|
|
|
215
|
-
it('whitespace changes ->
|
|
243
|
+
it('whitespace changes -> same', () => {
|
|
216
244
|
// Arrange
|
|
217
245
|
const template =
|
|
218
246
|
'# a really really interesting comment\n' +
|
|
219
247
|
'BLAH=1\n' +
|
|
220
248
|
'FOO=2\n' +
|
|
221
249
|
'BAR=3\n';
|
|
250
|
+
const prefix = '#@TEMPLATE = 1.env.template\n';
|
|
222
251
|
const target0 =
|
|
223
|
-
|
|
252
|
+
prefix +
|
|
224
253
|
'# a really really interesting comment\n' +
|
|
225
254
|
'BLAH=1\n' +
|
|
226
255
|
'\n' +
|
|
@@ -231,27 +260,26 @@ describe('applyTemplates', () => {
|
|
|
231
260
|
writeFileSync('1.env', target0);
|
|
232
261
|
|
|
233
262
|
// Act
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
false,
|
|
238
|
-
);
|
|
263
|
+
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
264
|
+
const result = transformComparison(transform, false, false, false);
|
|
265
|
+
transform.writeTarget();
|
|
239
266
|
|
|
240
267
|
// Assert
|
|
241
|
-
expect(result).toBe('
|
|
268
|
+
expect(result).toBe('same');
|
|
242
269
|
expect(readFileSync('1.env.template').toString()).toEqual(template);
|
|
243
270
|
expect(readFileSync('1.env').toString()).toEqual(target0);
|
|
244
271
|
});
|
|
245
272
|
|
|
246
|
-
it('ordering changes ->
|
|
273
|
+
it('ordering changes -> same', () => {
|
|
247
274
|
// Arrange
|
|
248
275
|
const template =
|
|
249
276
|
'# a really really interesting comment\n' +
|
|
250
277
|
'BLAH=1\n' +
|
|
251
278
|
'FOO=2\n' +
|
|
252
279
|
'BAR=3\n';
|
|
280
|
+
const prefix = '#@TEMPLATE = 1.env.template\n';
|
|
253
281
|
const target0 =
|
|
254
|
-
|
|
282
|
+
prefix +
|
|
255
283
|
'FOO=2\n' +
|
|
256
284
|
'BLAH=1\n' +
|
|
257
285
|
'BAR=3\n' +
|
|
@@ -260,14 +288,12 @@ describe('applyTemplates', () => {
|
|
|
260
288
|
writeFileSync('1.env', target0);
|
|
261
289
|
|
|
262
290
|
// Act
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
false,
|
|
267
|
-
);
|
|
291
|
+
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
292
|
+
const result = transformComparison(transform, false, false, false);
|
|
293
|
+
transform.writeTarget();
|
|
268
294
|
|
|
269
295
|
// Assert
|
|
270
|
-
expect(result).toBe('
|
|
296
|
+
expect(result).toBe('same');
|
|
271
297
|
expect(readFileSync('1.env.template').toString()).toEqual(template);
|
|
272
298
|
expect(readFileSync('1.env').toString()).toEqual(target0);
|
|
273
299
|
});
|
|
@@ -279,7 +305,7 @@ describe('applyTemplates', () => {
|
|
|
279
305
|
|
|
280
306
|
// Act
|
|
281
307
|
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
282
|
-
const result = transformComparison(transform, false, false);
|
|
308
|
+
const result = transformComparison(transform, false, false, false);
|
|
283
309
|
transform.writeTarget();
|
|
284
310
|
|
|
285
311
|
const expectedTarget = '#@TEMPLATE = 1.env.template\n' + template;
|
|
@@ -298,7 +324,7 @@ describe('applyTemplates', () => {
|
|
|
298
324
|
|
|
299
325
|
// Act
|
|
300
326
|
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
301
|
-
const result = transformComparison(transform, false, false);
|
|
327
|
+
const result = transformComparison(transform, false, false, false);
|
|
302
328
|
transform.writeTarget();
|
|
303
329
|
|
|
304
330
|
const expectedTarget = '#@TEMPLATE = 1.env.template\n' + template;
|
|
@@ -318,7 +344,7 @@ describe('applyTemplates', () => {
|
|
|
318
344
|
|
|
319
345
|
// Act
|
|
320
346
|
const transform = new EnvConfigTransform('1.env.template', '1.env');
|
|
321
|
-
const result = transformComparison(transform, false, false);
|
|
347
|
+
const result = transformComparison(transform, false, false, false);
|
|
322
348
|
transform.writeTarget();
|
|
323
349
|
|
|
324
350
|
// Assert
|
|
@@ -342,11 +368,13 @@ describe('applyTemplates', () => {
|
|
|
342
368
|
saveEnv('1.env.template', template);
|
|
343
369
|
|
|
344
370
|
// Act
|
|
345
|
-
const
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
371
|
+
const transform = new EnvConfigTransform(
|
|
372
|
+
'1.env.template',
|
|
373
|
+
'1.env',
|
|
374
|
+
new MockVault(),
|
|
349
375
|
);
|
|
376
|
+
const result = transformComparison(transform, false, false, false);
|
|
377
|
+
transform.writeTarget();
|
|
350
378
|
|
|
351
379
|
// Assert
|
|
352
380
|
expect(result).toBe('created');
|
|
@@ -369,7 +397,7 @@ describe('applyTemplates', () => {
|
|
|
369
397
|
'1.env',
|
|
370
398
|
new MockVault(),
|
|
371
399
|
);
|
|
372
|
-
const result = transformComparison(transform, false, false);
|
|
400
|
+
const result = transformComparison(transform, false, false, false);
|
|
373
401
|
transform.writeTarget();
|
|
374
402
|
|
|
375
403
|
// Assert
|
|
@@ -395,11 +423,13 @@ describe('applyTemplates', () => {
|
|
|
395
423
|
saveEnv('1.env', target, '#@TEMPLATE = 1.env.template\n');
|
|
396
424
|
|
|
397
425
|
// Act
|
|
398
|
-
const
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
426
|
+
const transform = new EnvConfigTransform(
|
|
427
|
+
'1.env.template',
|
|
428
|
+
'1.env',
|
|
429
|
+
new MockVault(),
|
|
402
430
|
);
|
|
431
|
+
const result = transformComparison(transform, false, false, false);
|
|
432
|
+
transform.writeTarget();
|
|
403
433
|
|
|
404
434
|
// Assert
|
|
405
435
|
expect(result).toBe('same');
|
|
@@ -426,7 +456,7 @@ describe('applyTemplates', () => {
|
|
|
426
456
|
'1.env',
|
|
427
457
|
new MockVault(),
|
|
428
458
|
);
|
|
429
|
-
const result = transformComparison(transform, false, false);
|
|
459
|
+
const result = transformComparison(transform, false, false, false);
|
|
430
460
|
transform.writeTarget();
|
|
431
461
|
|
|
432
462
|
// Assert
|
|
@@ -558,11 +588,9 @@ describe('applyTemplates', () => {
|
|
|
558
588
|
writeFileSync('1', template);
|
|
559
589
|
|
|
560
590
|
// Act
|
|
561
|
-
const
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
false,
|
|
565
|
-
);
|
|
591
|
+
const transform = new ConfigTransform('1.template', '1');
|
|
592
|
+
const result = transformComparison(transform, false, false, false);
|
|
593
|
+
transform.writeTarget();
|
|
566
594
|
|
|
567
595
|
// Assert
|
|
568
596
|
expect(result).toBe('same');
|
|
@@ -580,11 +608,9 @@ describe('applyTemplates', () => {
|
|
|
580
608
|
writeFileSync('1.template', template);
|
|
581
609
|
|
|
582
610
|
// Act
|
|
583
|
-
const
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
false,
|
|
587
|
-
);
|
|
611
|
+
const transform = new ConfigTransform('1.template', '1');
|
|
612
|
+
const result = transformComparison(transform, false, false, false);
|
|
613
|
+
transform.writeTarget();
|
|
588
614
|
|
|
589
615
|
// Assert
|
|
590
616
|
expect(result).toBe('created');
|
|
@@ -592,7 +618,7 @@ describe('applyTemplates', () => {
|
|
|
592
618
|
expect(readFileSync('1').toString()).toEqual(template);
|
|
593
619
|
});
|
|
594
620
|
|
|
595
|
-
it('target with differences -> different', () => {
|
|
621
|
+
it('target with differences in order -> different', () => {
|
|
596
622
|
// Arrange
|
|
597
623
|
const template = `
|
|
598
624
|
BLAH
|
|
@@ -608,16 +634,14 @@ describe('applyTemplates', () => {
|
|
|
608
634
|
writeFileSync('1', target0);
|
|
609
635
|
|
|
610
636
|
// Act
|
|
611
|
-
const
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
false,
|
|
615
|
-
);
|
|
637
|
+
const transform = new ConfigTransform('1.template', '1');
|
|
638
|
+
const result = transformComparison(transform, false, false, false);
|
|
639
|
+
transform.writeTarget();
|
|
616
640
|
|
|
617
641
|
// Assert
|
|
618
642
|
expect(result).toBe('different');
|
|
619
643
|
expect(readFileSync('1.template').toString()).toEqual(template);
|
|
620
|
-
expect(readFileSync('1').toString()).toEqual(
|
|
644
|
+
expect(readFileSync('1').toString()).toEqual(template);
|
|
621
645
|
});
|
|
622
646
|
});
|
|
623
647
|
});
|
|
@@ -10,6 +10,7 @@ import * as path from 'path';
|
|
|
10
10
|
import * as readline from 'readline';
|
|
11
11
|
import * as yargs from 'yargs';
|
|
12
12
|
import { CommandModule } from 'yargs';
|
|
13
|
+
import { getTimestamp } from '../../common';
|
|
13
14
|
import { BitwardenVault, Vault } from './bitwarden-vault';
|
|
14
15
|
|
|
15
16
|
export interface ApplyTemplatesOptions {
|
|
@@ -19,6 +20,7 @@ export interface ApplyTemplatesOptions {
|
|
|
19
20
|
verbose: boolean;
|
|
20
21
|
replace: boolean;
|
|
21
22
|
bitwardenUrl: string | undefined;
|
|
23
|
+
commentObsolete: boolean;
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
export interface DiffResult {
|
|
@@ -85,6 +87,14 @@ export const applyTemplates: CommandModule<unknown, ApplyTemplatesOptions> = {
|
|
|
85
87
|
"Placeholders must be in the form: <BITWARDEN_{itemName::fieldName}> where fieldname can be 'username', 'password', or the name of a custom field.",
|
|
86
88
|
default: undefined,
|
|
87
89
|
hidden: true,
|
|
90
|
+
})
|
|
91
|
+
.option('commentObsolete', {
|
|
92
|
+
alias: 'co',
|
|
93
|
+
type: 'boolean',
|
|
94
|
+
describe:
|
|
95
|
+
'Comments out all variables that are no longer in the template.',
|
|
96
|
+
default: false,
|
|
97
|
+
boolean: true,
|
|
88
98
|
}),
|
|
89
99
|
handler: compareTemplates,
|
|
90
100
|
};
|
|
@@ -102,7 +112,7 @@ export class ConfigTransform {
|
|
|
102
112
|
|
|
103
113
|
readonly targetExists: boolean;
|
|
104
114
|
|
|
105
|
-
compare(_: boolean, __: boolean): DiffResult {
|
|
115
|
+
compare(_: boolean, __: boolean, ___: boolean): DiffResult {
|
|
106
116
|
const templateContent = readFileSync(this.template).toString();
|
|
107
117
|
const targetContent = readFileSync(this.target).toString();
|
|
108
118
|
const diff = Diff.diffLines(targetContent, templateContent);
|
|
@@ -159,45 +169,73 @@ export class EnvConfigTransform extends ConfigTransform {
|
|
|
159
169
|
);
|
|
160
170
|
}
|
|
161
171
|
|
|
162
|
-
private mergeContent(
|
|
163
|
-
|
|
172
|
+
private mergeContent(
|
|
173
|
+
templateContent: string,
|
|
174
|
+
targetContent: string,
|
|
175
|
+
commentObsolete: boolean,
|
|
176
|
+
): string {
|
|
177
|
+
const templateVars = envfile.parse(templateContent);
|
|
164
178
|
const targetVars = envfile.parse(targetContent);
|
|
165
|
-
|
|
179
|
+
const optionalCommentTag = commentObsolete ? '# ' : '';
|
|
180
|
+
let mergedContent = targetContent;
|
|
166
181
|
let additionalContent = '';
|
|
182
|
+
for (const [k, v] of Object.entries(templateVars)) {
|
|
183
|
+
// if template variable is not in the .env file - append it at the end
|
|
184
|
+
if (!(k in targetVars)) {
|
|
185
|
+
additionalContent += `${envfile.stringify({ [k]: v })}`;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
167
189
|
for (const [k, v] of Object.entries(targetVars)) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
190
|
+
if (!(k in templateVars)) {
|
|
191
|
+
// Handle obsolete variables in the existing .env file
|
|
192
|
+
// Add a comment (if not already present) that the variable is obsolete
|
|
193
|
+
// Comment the variable out if explicit flag is provided
|
|
194
|
+
const lineRegex = new RegExp(`(?<=(\n|^))${k}=`);
|
|
195
|
+
const line = targetContent.match(lineRegex);
|
|
196
|
+
const obsoleteVarDescription = `# Variable ${k} is not a part of the template.\n`;
|
|
197
|
+
const prefixToAttach = mergedContent.includes(obsoleteVarDescription)
|
|
198
|
+
? ''
|
|
199
|
+
: obsoleteVarDescription;
|
|
200
|
+
mergedContent = mergedContent.replace(
|
|
201
|
+
lineRegex,
|
|
202
|
+
prefixToAttach + optionalCommentTag + line?.[0],
|
|
203
|
+
);
|
|
204
|
+
} else if (templateVars[k] !== v) {
|
|
172
205
|
const commentRegex = new RegExp(`(?<=(\n|^))#${k}=`);
|
|
173
206
|
const commented = targetContent.match(commentRegex);
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
207
|
+
// if there is no dedicated comment for variable to preserve custom
|
|
208
|
+
// value, template value is not a placeholder, and template value is not
|
|
209
|
+
// empty - .env variable value is outdated and replaced with template value
|
|
210
|
+
if (
|
|
211
|
+
!commented &&
|
|
212
|
+
!isPlaceholder(templateVars[k]) &&
|
|
213
|
+
templateVars[k] !== ''
|
|
214
|
+
) {
|
|
182
215
|
mergedContent = mergedContent.replace(
|
|
183
216
|
new RegExp(`(?<=(\n|^))${k}=.*?(\r?\n|$)`),
|
|
184
|
-
|
|
217
|
+
envfile.stringify({ [k]: templateVars[k] }),
|
|
185
218
|
);
|
|
186
219
|
}
|
|
187
220
|
}
|
|
188
221
|
}
|
|
222
|
+
|
|
189
223
|
if (additionalContent !== '') {
|
|
190
|
-
mergedContent += `\n
|
|
224
|
+
mergedContent += `\n# ${getTimestamp()} Newly added variables:\n${additionalContent}`;
|
|
191
225
|
}
|
|
192
226
|
return mergedContent;
|
|
193
227
|
}
|
|
194
228
|
|
|
195
|
-
compare(
|
|
229
|
+
compare(
|
|
230
|
+
replace: boolean,
|
|
231
|
+
verbose: boolean,
|
|
232
|
+
commentObsolete: boolean,
|
|
233
|
+
): DiffResult {
|
|
196
234
|
const templateContent = this.readTemplate();
|
|
197
235
|
const targetContent = readFileSync(this.target).toString();
|
|
198
236
|
this.newContent = replace
|
|
199
237
|
? templateContent
|
|
200
|
-
: this.mergeContent(templateContent, targetContent);
|
|
238
|
+
: this.mergeContent(templateContent, targetContent, commentObsolete);
|
|
201
239
|
|
|
202
240
|
// set the #@TARGET prefix line
|
|
203
241
|
this.newContent = setDefinedTemplate(
|
|
@@ -280,6 +318,7 @@ function compareTemplates(options: ApplyTemplatesOptions): void {
|
|
|
280
318
|
transform,
|
|
281
319
|
options.replace,
|
|
282
320
|
options.verbose,
|
|
321
|
+
options.commentObsolete,
|
|
283
322
|
);
|
|
284
323
|
results[resultKey].push(transform);
|
|
285
324
|
}
|
|
@@ -360,7 +399,9 @@ function compareTemplates(options: ApplyTemplatesOptions): void {
|
|
|
360
399
|
}
|
|
361
400
|
|
|
362
401
|
function setDefinedTemplate(targetText: string, templateName: string): string {
|
|
363
|
-
return
|
|
402
|
+
return getDefinedTemplate(targetText)
|
|
403
|
+
? targetText
|
|
404
|
+
: `#@TEMPLATE = ${path.basename(templateName)}\n` + targetText;
|
|
364
405
|
}
|
|
365
406
|
|
|
366
407
|
function getDefinedTemplate(targetText: string): string | undefined {
|
|
@@ -407,6 +448,7 @@ export function transformComparison(
|
|
|
407
448
|
transform: ConfigTransform,
|
|
408
449
|
replace: boolean,
|
|
409
450
|
verbose: boolean,
|
|
451
|
+
commentObsolete: boolean,
|
|
410
452
|
): DiffResult['result'] {
|
|
411
453
|
if (!transform.targetExists) {
|
|
412
454
|
transform.writeTarget();
|
|
@@ -416,7 +458,7 @@ export function transformComparison(
|
|
|
416
458
|
return 'created';
|
|
417
459
|
}
|
|
418
460
|
|
|
419
|
-
const { result, diff } = transform.compare(replace, verbose);
|
|
461
|
+
const { result, diff } = transform.compare(replace, verbose, commentObsolete);
|
|
420
462
|
if (result === 'same') {
|
|
421
463
|
if (verbose) {
|
|
422
464
|
console.log(gray(`File ${transform.target} has no changes.`));
|
|
@@ -9,6 +9,7 @@ import * as chalk from 'chalk';
|
|
|
9
9
|
import { exec, ExecException } from 'child_process';
|
|
10
10
|
import { existsSync, mkdirSync } from 'fs';
|
|
11
11
|
import { dirname, join, normalize, relative } from 'path';
|
|
12
|
+
import { getTimestamp } from '../../common';
|
|
12
13
|
import { PgDumpOptions } from './pg-dump-options';
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -83,18 +84,6 @@ const ensureDumpDirectoryExist = (targetPath: string): string => {
|
|
|
83
84
|
return dbSchemaExportPath;
|
|
84
85
|
};
|
|
85
86
|
|
|
86
|
-
/**
|
|
87
|
-
* Returns a readable timestamp in current locale time, e.g. `[2021-05-13 13:02:12.685]`
|
|
88
|
-
*/
|
|
89
|
-
const getTimestamp = (): string => {
|
|
90
|
-
const offset = new Date().getTimezoneOffset() * 60000; //offset in milliseconds
|
|
91
|
-
const localISOTime = new Date(Date.now() - offset)
|
|
92
|
-
.toISOString()
|
|
93
|
-
.slice(0, -1)
|
|
94
|
-
.replace('T', ' ');
|
|
95
|
-
return `[${localISOTime}]`;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
87
|
export const generate = (options: PgDumpOptions): void => {
|
|
99
88
|
try {
|
|
100
89
|
console.log(getTimestamp(), `Starting pg-dump command...`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './utils';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a readable timestamp in current locale time, e.g. `[2021-05-13 13:02:12.685]`
|
|
3
|
+
*/
|
|
4
|
+
export const getTimestamp = (): string => {
|
|
5
|
+
const offset = new Date().getTimezoneOffset() * 60000; //offset in milliseconds
|
|
6
|
+
const localISOTime = new Date(Date.now() - offset)
|
|
7
|
+
.toISOString()
|
|
8
|
+
.slice(0, -1)
|
|
9
|
+
.replace('T', ' ');
|
|
10
|
+
return `[${localISOTime}]`;
|
|
11
|
+
};
|