1 | 'use strict';
|
2 |
|
3 | var spawn = require('child_process').spawn,
|
4 | utils = require('./utils');
|
5 |
|
6 | var starter = {
|
7 | start: function (options, config) {
|
8 |
|
9 | var additionalArgs = [],
|
10 | port = options.port || config.start.port,
|
11 | db_dir = utils.absPath(config.setup.install_path),
|
12 | jar = config.setup.jar;
|
13 |
|
14 | if (options.dbPath) {
|
15 | additionalArgs.push('-dbPath', options.dbPath);
|
16 | } else {
|
17 | additionalArgs.push('-inMemory');
|
18 | }
|
19 | if (options.sharedDb) {
|
20 | additionalArgs.push('-sharedDb');
|
21 | }
|
22 | if (options.cors) {
|
23 | additionalArgs.push('-cors', options.cors);
|
24 | }
|
25 | if (options.delayTransientStatuses) {
|
26 | additionalArgs.push('-delayTransientStatuses');
|
27 | }
|
28 | if (options.optimizeDbBeforeStartup) {
|
29 | additionalArgs.push('-optimizeDbBeforeStartup');
|
30 | }
|
31 | if (options.help) {
|
32 | additionalArgs.push('-help');
|
33 | }
|
34 |
|
35 | var args = ['-Djava.library.path=' + db_dir + '/DynamoDBLocal_lib', '-jar', jar, '-port', port];
|
36 | args = args.concat(additionalArgs);
|
37 |
|
38 | var child = spawn('java', args, {
|
39 | cwd: db_dir,
|
40 | env: process.env,
|
41 | stdio: ['pipe', 'pipe', process.stderr]
|
42 | });
|
43 |
|
44 | if (!child.pid) {
|
45 | throw new Error('Unable to start DynamoDB Local process!');
|
46 | }
|
47 |
|
48 | child.on('error', function (code) {
|
49 | throw new Error(code);
|
50 | });
|
51 |
|
52 | return {
|
53 | proc: child,
|
54 | port: port
|
55 | };
|
56 | },
|
57 | };
|
58 |
|
59 | module.exports = starter;
|