@verdnatura/myt 1.6.2 → 1.6.4

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/myt-run.js +82 -73
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -279,7 +279,7 @@ Builds and starts local database server container. It only rebuilds the image
279
279
  when dump have been modified.
280
280
 
281
281
  ```text
282
- $ myt run [-c|--ci] [-r|--random] [-n|--network <string>]
282
+ $ myt run [-c|--ci] [-r|--random] [-t|--tmpfs] [-n|--network <string>]
283
283
  ```
284
284
 
285
285
  ### start
package/myt-run.js CHANGED
@@ -33,7 +33,8 @@ class Run extends Command {
33
33
  },
34
34
  boolean: [
35
35
  'ci',
36
- 'random'
36
+ 'random',
37
+ 'tmpfs'
37
38
  ]
38
39
  };
39
40
 
@@ -117,92 +118,100 @@ class Run extends Command {
117
118
  detach: true
118
119
  });
119
120
  const ct = await docker.run(opts.code, null, runOptions);
120
- const server = new Server(ct, dbConfig);
121
121
 
122
- if (isRandom) {
123
- try {
124
- const netSettings = await ct.inspect({
125
- format: '{{json .NetworkSettings}}'
126
- });
127
-
128
- if (opts.ci) {
129
- dbConfig.host = opts.network
130
- ? netSettings.Networks[opts.network].IPAddress
131
- : netSettings.Gateway;
132
- dbConfig.port = 3306;
133
- } else
134
- dbConfig.port = netSettings.Ports['3306/tcp'][0].HostPort;
135
- } catch (err) {
136
- await server.rm();
137
- throw err;
122
+ try {
123
+ const server = new Server(ct, dbConfig);
124
+
125
+ if (isRandom) {
126
+ try {
127
+ const netSettings = await ct.inspect({
128
+ format: '{{json .NetworkSettings}}'
129
+ });
130
+
131
+ if (opts.ci || opts.network) {
132
+ dbConfig.host = opts.network
133
+ ? netSettings.Networks[opts.network].IPAddress
134
+ : netSettings.Gateway;
135
+ dbConfig.port = 3306;
136
+ } else
137
+ dbConfig.port = netSettings.Ports['3306/tcp'][0].HostPort;
138
+ } catch (err) {
139
+ await server.rm();
140
+ throw err;
141
+ }
138
142
  }
139
- }
140
143
 
141
- this.emit('waitingDb');
142
- await server.wait();
143
- const conn = await myt.createConnection();
144
+ this.emit('waitingDb');
145
+ await server.wait();
146
+ const conn = await myt.createConnection();
144
147
 
145
- // Mock date functions
148
+ // Mock date functions
146
149
 
147
- this.emit('mockingDate');
148
- const mockDateScript = path.join(dumpDir, 'mockDate.sql');
150
+ this.emit('mockingDate');
151
+ const mockDateScript = path.join(dumpDir, 'mockDate.sql');
149
152
 
150
- if (opts.mockDate) {
151
- if (!await fs.pathExists(mockDateScript))
152
- throw new Error(`Date mock enabled but mock script does not exist: ${mockDateScript}`);
153
-
154
- let sql = await fs.readFile(mockDateScript, 'utf8');
155
- sql = sql.replace(/@mockDate/g, SqlString.escape(opts.mockDate));
156
- await connExt.multiQuery(conn, sql);
157
- }
158
-
159
- // Apply changes
160
-
161
- const hasTriggers = await fs.exists(`${dumpDataDir}/triggers.sql`);
162
-
163
- Object.assign(opts, {
164
- triggers: !hasTriggers,
165
- commit: true,
166
- dbConfig
167
- });
168
- await myt.run(Push, opts);
153
+ if (opts.mockDate) {
154
+ if (!await fs.pathExists(mockDateScript))
155
+ throw new Error(`Date mock enabled but mock script does not exist: ${mockDateScript}`);
169
156
 
170
- // Apply fixtures
157
+ let sql = await fs.readFile(mockDateScript, 'utf8');
158
+ sql = sql.replace(/@mockDate/g, SqlString.escape(opts.mockDate));
159
+ await connExt.multiQuery(conn, sql);
160
+ }
171
161
 
172
- this.emit('applyingFixtures');
173
- const fixturesFiles = [
174
- 'fixtures.before',
175
- '.fixtures',
176
- 'fixtures.after',
177
- 'fixtures.local'
178
- ]
179
- for (const file of fixturesFiles) {
180
- if (!await fs.exists(`${dumpDir}/${file}.sql`)) continue;
181
- await ct.exec(null, 'docker-import.sh',
182
- [`/workspace/dump/${file}`],
183
- 'spawn',
184
- true
185
- );
186
- }
162
+ // Apply changes
163
+
164
+ const hasTriggers = await fs.exists(`${dumpDataDir}/triggers.sql`);
165
+
166
+ Object.assign(opts, {
167
+ triggers: !hasTriggers,
168
+ commit: true,
169
+ dbConfig
170
+ });
171
+ await myt.run(Push, opts);
172
+
173
+ // Apply fixtures
174
+
175
+ this.emit('applyingFixtures');
176
+ const fixturesFiles = [
177
+ 'fixtures.before',
178
+ '.fixtures',
179
+ 'fixtures.after',
180
+ 'fixtures.local'
181
+ ]
182
+ for (const file of fixturesFiles) {
183
+ if (!await fs.exists(`${dumpDir}/${file}.sql`)) continue;
184
+ await ct.exec(null, 'docker-import.sh',
185
+ [`/workspace/dump/${file}`],
186
+ 'spawn',
187
+ true
188
+ );
189
+ }
187
190
 
188
- // Create triggers
191
+ // Create triggers
189
192
 
190
- if (!hasTriggers) {
191
- this.emit('creatingTriggers');
193
+ if (!hasTriggers) {
194
+ this.emit('creatingTriggers');
192
195
 
193
- for (const schema of opts.schemas) {
194
- const triggersPath = `${opts.routinesDir}/${schema}/triggers`;
195
- if (!await fs.pathExists(triggersPath))
196
- continue;
196
+ for (const schema of opts.schemas) {
197
+ const triggersPath = `${opts.routinesDir}/${schema}/triggers`;
198
+ if (!await fs.pathExists(triggersPath))
199
+ continue;
197
200
 
198
- const triggersDir = await fs.readdir(triggersPath);
199
- for (const triggerFile of triggersDir)
200
- await connExt.queryFromFile(conn, `${triggersPath}/${triggerFile}`);
201
+ const triggersDir = await fs.readdir(triggersPath);
202
+ for (const triggerFile of triggersDir)
203
+ await connExt.queryFromFile(conn, `${triggersPath}/${triggerFile}`);
204
+ }
201
205
  }
202
- }
203
206
 
204
- await conn.end();
205
- return server;
207
+ await conn.end();
208
+ return server;
209
+ } catch (err) {
210
+ try {
211
+ await ct.rm({force: true});
212
+ } catch (e) {}
213
+ throw err;
214
+ }
206
215
  }
207
216
  }
208
217
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdnatura/myt",
3
- "version": "1.6.2",
3
+ "version": "1.6.4",
4
4
  "author": "Verdnatura Levante SL",
5
5
  "description": "MySQL version control",
6
6
  "license": "GPL-3.0",