@verdnatura/myt 1.5.14 → 1.5.16
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/assets/myt.default.yml +1 -0
- package/myt-push.js +16 -6
- package/myt-run.js +15 -0
- package/myt.js +18 -12
- package/package.json +1 -1
package/assets/myt.default.yml
CHANGED
package/myt-push.js
CHANGED
|
@@ -321,16 +321,26 @@ class Push extends Command {
|
|
|
321
321
|
const oldSum = engine.getShaSum(type, schema, name);
|
|
322
322
|
const isEqual = newSql == oldSql;
|
|
323
323
|
|
|
324
|
+
let statusMsg;
|
|
325
|
+
if (exists && !oldSql)
|
|
326
|
+
statusMsg = '[+]'.green;
|
|
327
|
+
else if (!exists)
|
|
328
|
+
statusMsg = '[-]'.red;
|
|
329
|
+
else
|
|
330
|
+
statusMsg = '[·]'.yellow;
|
|
331
|
+
|
|
324
332
|
let actionMsg;
|
|
325
|
-
if (
|
|
333
|
+
if (isEqual)
|
|
326
334
|
actionMsg = '[I]'.blue;
|
|
327
|
-
else if (exists)
|
|
328
|
-
actionMsg = '[+]'.green;
|
|
329
335
|
else
|
|
330
|
-
actionMsg = '[
|
|
336
|
+
actionMsg = '[A]'.green;
|
|
331
337
|
|
|
332
338
|
const typeMsg = `[${change.type.abbr}]`[change.type.color];
|
|
333
|
-
console.log('',
|
|
339
|
+
console.log('',
|
|
340
|
+
(statusMsg + actionMsg).bold,
|
|
341
|
+
typeMsg.bold,
|
|
342
|
+
change.fullName
|
|
343
|
+
);
|
|
334
344
|
|
|
335
345
|
if (!isEqual) {
|
|
336
346
|
const scapedSchema = SqlString.escapeId(schema, true);
|
|
@@ -475,7 +485,7 @@ class Push extends Command {
|
|
|
475
485
|
|
|
476
486
|
return routines.sort((a, b) => {
|
|
477
487
|
if (b.mark != a.mark)
|
|
478
|
-
return b.mark == '-' ? 1 :
|
|
488
|
+
return b.mark == '-' ? -1 : 1;
|
|
479
489
|
|
|
480
490
|
if (b.type.name !== a.type.name) {
|
|
481
491
|
if (b.type.name == 'VIEW')
|
package/myt-run.js
CHANGED
|
@@ -6,6 +6,7 @@ const fs = require('fs-extra');
|
|
|
6
6
|
const path = require('path');
|
|
7
7
|
const Server = require('./lib/server');
|
|
8
8
|
const connExt = require('./lib/conn');
|
|
9
|
+
const SqlString = require('sqlstring');
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Builds the database image and runs a container. It only rebuilds the
|
|
@@ -152,6 +153,20 @@ class Run extends Command {
|
|
|
152
153
|
await connExt.queryFromFile(conn, `${triggersPath}/${triggerFile}`);
|
|
153
154
|
}
|
|
154
155
|
|
|
156
|
+
// Mock date functions
|
|
157
|
+
|
|
158
|
+
console.log('Mocking date functions.');
|
|
159
|
+
const mockDateScript = path.join(dumpDir, 'mockDate.sql');
|
|
160
|
+
|
|
161
|
+
if (opts.mockDate) {
|
|
162
|
+
if (!await fs.pathExists(mockDateScript))
|
|
163
|
+
throw new Error(`Date mock enabled but mock script does not exist: ${mockDateScript}`);
|
|
164
|
+
|
|
165
|
+
let sql = await fs.readFile(mockDateScript, 'utf8');
|
|
166
|
+
sql = sql.replace(/@mockDate/g, SqlString.escape(opts.mockDate));
|
|
167
|
+
await connExt.multiQuery(conn, sql);
|
|
168
|
+
}
|
|
169
|
+
|
|
155
170
|
return server;
|
|
156
171
|
}
|
|
157
172
|
}
|
package/myt.js
CHANGED
|
@@ -17,7 +17,6 @@ class Myt {
|
|
|
17
17
|
params: {
|
|
18
18
|
remote: 'Name of remote to use',
|
|
19
19
|
workspace: 'The base directory of the project',
|
|
20
|
-
socket: 'Wether to connect to database via socket',
|
|
21
20
|
debug: 'Wether to enable debug mode',
|
|
22
21
|
version: 'Display the version number and exit',
|
|
23
22
|
help: 'Display this help message'
|
|
@@ -28,7 +27,6 @@ class Myt {
|
|
|
28
27
|
alias: {
|
|
29
28
|
remote: 'r',
|
|
30
29
|
workspace: 'w',
|
|
31
|
-
socket: 'k',
|
|
32
30
|
debug: 'd',
|
|
33
31
|
version: 'v',
|
|
34
32
|
help: 'h'
|
|
@@ -120,8 +118,8 @@ class Myt {
|
|
|
120
118
|
const wsPackageJson = require(wsPackageFile);
|
|
121
119
|
try {
|
|
122
120
|
depVersion = wsPackageJson
|
|
123
|
-
.dependencies
|
|
124
|
-
.
|
|
121
|
+
.dependencies[packageJson.name]
|
|
122
|
+
.match(versionRegex);
|
|
125
123
|
} catch (e) {}
|
|
126
124
|
}
|
|
127
125
|
|
|
@@ -205,34 +203,42 @@ class Myt {
|
|
|
205
203
|
|
|
206
204
|
let dbConfig;
|
|
207
205
|
try {
|
|
208
|
-
const
|
|
206
|
+
const iniData = ini.parse(await fs.readFile(iniPath, 'utf8')).client;
|
|
207
|
+
const iniConfig = {};
|
|
208
|
+
for (const key in iniData) {
|
|
209
|
+
const value = iniData[key];
|
|
210
|
+
const newKey = key.replace(/-/g, '_');
|
|
211
|
+
iniConfig[newKey] = value !== undefined ? value : true;
|
|
212
|
+
}
|
|
209
213
|
dbConfig = {
|
|
210
214
|
host: iniConfig.host,
|
|
211
215
|
port: iniConfig.port,
|
|
212
216
|
user: iniConfig.user,
|
|
213
217
|
password: iniConfig.password,
|
|
214
|
-
multipleStatements: true
|
|
215
|
-
|
|
218
|
+
multipleStatements: true
|
|
219
|
+
};
|
|
220
|
+
if (iniConfig.enable_cleartext_plugin) {
|
|
221
|
+
dbConfig.authPlugins = {
|
|
216
222
|
mysql_clear_password() {
|
|
217
223
|
return () => iniConfig.password + '\0';
|
|
218
224
|
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
225
|
+
};
|
|
226
|
+
}
|
|
221
227
|
if (iniConfig.ssl_ca) {
|
|
222
228
|
dbConfig.ssl = {
|
|
223
229
|
ca: await fs.readFile(`${opts.mytDir}/${iniConfig.ssl_ca}`),
|
|
224
230
|
rejectUnauthorized: iniConfig.ssl_verify_server_cert != undefined
|
|
225
231
|
}
|
|
226
232
|
}
|
|
233
|
+
if (iniConfig.socket) {
|
|
234
|
+
dbConfig.socketPath = iniConfig.socket;
|
|
235
|
+
}
|
|
227
236
|
} catch(err) {
|
|
228
237
|
const newErr = Error(`Cannot process the ini file, check that the syntax is correct: ${iniPath}`);
|
|
229
238
|
newErr.stack += `\nCaused by: ${err.stack}`;
|
|
230
239
|
throw newErr;
|
|
231
240
|
}
|
|
232
241
|
|
|
233
|
-
if (opts.socket)
|
|
234
|
-
dbConfig.socketPath = '/var/run/mysqld/mysqld.sock';
|
|
235
|
-
|
|
236
242
|
Object.assign(opts, {
|
|
237
243
|
iniFile,
|
|
238
244
|
dbConfig
|