@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.
@@ -1,6 +1,7 @@
1
1
  versionSchema: myt
2
2
  versionDigits: 5
3
3
  maxOldVersions: 20
4
+ mockDate: false
4
5
  sumViews: true
5
6
  schemas:
6
7
  - myt
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 ((exists && isEqual) || (!exists && !oldSql))
333
+ if (isEqual)
326
334
  actionMsg = '[I]'.blue;
327
- else if (exists)
328
- actionMsg = '[+]'.green;
329
335
  else
330
- actionMsg = '[-]'.red;
336
+ actionMsg = '[A]'.green;
331
337
 
332
338
  const typeMsg = `[${change.type.abbr}]`[change.type.color];
333
- console.log('', actionMsg.bold, typeMsg.bold, change.fullName);
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 : -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
- .myt.match(versionRegex);
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 iniConfig = ini.parse(await fs.readFile(iniPath, 'utf8')).client;
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
- authPlugins: {
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdnatura/myt",
3
- "version": "1.5.14",
3
+ "version": "1.5.16",
4
4
  "author": "Verdnatura Levante SL",
5
5
  "description": "MySQL version control",
6
6
  "license": "GPL-3.0",