1 | #!/usr/bin/env node
|
2 |
|
3 | const args = require('minimist')(process.argv.slice(2));
|
4 | const ipc = require('node-ipc');
|
5 | const BRACKET_END = '$(B_R-A_C-K_E-T)';
|
6 |
|
7 | ipc.config.id = 'sfLibraryManagerClient';
|
8 | ipc.config.port = 8001;
|
9 | ipc.config.encoding = "binary";
|
10 | ipc.config.retry = 5000;
|
11 | ipc.config.logger = function() {};
|
12 |
|
13 | var stdinData = '';
|
14 | process.stdin.setEncoding('binary');
|
15 | process.stdin.on('data', message => {
|
16 | stdinData += message;
|
17 | if (stdinData.endsWith(BRACKET_END)) {
|
18 | var splitted = stdinData.split(BRACKET_END);
|
19 | splitted = splitted[splitted.length - 2];
|
20 | writeTask(splitted);
|
21 | stdinData = "";
|
22 | }
|
23 | });
|
24 |
|
25 | function writeTask(data) {
|
26 | ipc.of.sfLibraryManager.emit(
|
27 | 'writeTask',
|
28 | data
|
29 | );
|
30 | }
|
31 |
|
32 | ipc.connectTo(
|
33 | "sfLibraryManager",
|
34 | "/tmp/app.sfLibraryManager",
|
35 | function() {
|
36 | ipc.of.sfLibraryManager.on(
|
37 | 'connect',
|
38 | function() {
|
39 |
|
40 | if (args.task) {
|
41 | ipc.of.sfLibraryManager.emit(
|
42 | args.task, { libraryFolder: args.libraryFolder, name: args.name }
|
43 | );
|
44 | }
|
45 | else {
|
46 | ipc.of.sfLibraryManager.emit(
|
47 | 'init', {
|
48 | initialLibraryData: args.initialLibraryData,
|
49 | libraryFolder: args.libraryFolder,
|
50 | name: args.name
|
51 | }
|
52 | );
|
53 |
|
54 | }
|
55 | }
|
56 | );
|
57 | ipc.of.sfLibraryManager.on(
|
58 | 'read',
|
59 | function(data) {
|
60 | process.stdout.write(data + BRACKET_END);
|
61 | }
|
62 | );
|
63 | ipc.of.sfLibraryManager.on(
|
64 | 'error',
|
65 | function(data) {
|
66 | process.stderr.write(data.toString());
|
67 | }
|
68 | );
|
69 | }
|
70 | );
|