@webos-tools/cli 3.0.6 → 3.1.1
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/.eslintignore +1 -1
- package/.eslintrc.js +52 -52
- package/APIs.js +79 -79
- package/CHANGELOG.md +157 -138
- package/LICENSE +201 -201
- package/README.md +218 -218
- package/bin/ares-config.js +199 -199
- package/bin/ares-device-info.js +30 -30
- package/bin/ares-device.js +219 -219
- package/bin/ares-generate.js +274 -270
- package/bin/ares-inspect.js +179 -179
- package/bin/ares-install.js +223 -223
- package/bin/ares-launch.js +318 -318
- package/bin/ares-log.js +255 -255
- package/bin/ares-novacom.js +220 -223
- package/bin/ares-package.js +336 -336
- package/bin/ares-pull.js +156 -156
- package/bin/ares-push.js +155 -155
- package/bin/ares-server.js +174 -174
- package/bin/ares-setup-device.js +528 -520
- package/bin/ares-shell.js +132 -132
- package/bin/ares.js +166 -166
- package/files/conf/ares.json +49 -49
- package/files/conf/command-service.json +73 -73
- package/files/conf/config.json +31 -22
- package/files/conf/ipk.json +30 -30
- package/files/conf/novacom-devices.json +35 -35
- package/files/conf/query/query-app.json +14 -14
- package/files/conf/query/query-hosted.json +18 -18
- package/files/conf/query/query-package.json +10 -10
- package/files/conf/query/query-service.json +6 -6
- package/files/conf/sdk.json +8 -8
- package/files/conf/template.json +57 -57
- package/files/conf/webos_emul +27 -27
- package/files/conf-base/env/sdk-ose.json +8 -8
- package/files/conf-base/env/sdk-tv.json +8 -8
- package/files/conf-base/profile/config-ose.json +29 -21
- package/files/conf-base/profile/config-tv.json +31 -22
- package/files/conf-base/query/query-app.json +14 -14
- package/files/conf-base/query/query-hosted.json +18 -18
- package/files/conf-base/query/query-package.json +10 -10
- package/files/conf-base/query/query-service.json +6 -6
- package/files/conf-base/template-conf/ose-templates.json +67 -67
- package/files/conf-base/template-conf/tv-sdk-templates.json +57 -57
- package/files/help/ares-config.help +43 -43
- package/files/help/ares-device.help +94 -94
- package/files/help/ares-generate.help +65 -65
- package/files/help/ares-inspect.help +70 -70
- package/files/help/ares-install.help +90 -90
- package/files/help/ares-launch.help +100 -100
- package/files/help/ares-log-pmlogd.help +84 -84
- package/files/help/ares-log.help +101 -101
- package/files/help/ares-novacom.help +68 -68
- package/files/help/ares-package.help +101 -101
- package/files/help/ares-pull.help +38 -38
- package/files/help/ares-push.help +38 -38
- package/files/help/ares-server.help +39 -39
- package/files/help/ares-setup-device.help +116 -75
- package/files/help/ares-shell.help +42 -42
- package/files/help/ares.help +47 -47
- package/files/help/readme.help +23 -23
- package/files/schema/ApplicationDescription.schema +319 -319
- package/files/schema/NovacomDevices.schema +61 -61
- package/files/templates/ose-sdk-templates/appinfo/appinfo.json +10 -10
- package/files/templates/ose-sdk-templates/bootplate-web/index.html +88 -88
- package/files/templates/ose-sdk-templates/hosted-webapp/index.html +13 -13
- package/files/templates/ose-sdk-templates/icon/icon.png +0 -0
- package/files/templates/ose-sdk-templates/js-service/helloclient.js +31 -31
- package/files/templates/ose-sdk-templates/js-service/helloworld_webos_service.js +188 -188
- package/files/templates/ose-sdk-templates/qml-app/main.qml +68 -68
- package/files/templates/ose-sdk-templates/qmlappinfo/appinfo.json +10 -10
- package/files/templates/ose-sdk-templates/serviceinfo/package.json +11 -11
- package/files/templates/ose-sdk-templates/serviceinfo/services.json +8 -8
- package/files/templates/tv-sdk-templates/appinfo/appinfo.json +10 -10
- package/files/templates/tv-sdk-templates/bootplate-web/index.html +58 -58
- package/files/templates/tv-sdk-templates/bootplate-web/webOSTVjs-1.2.10/LICENSE-2.0.txt +202 -202
- package/files/templates/tv-sdk-templates/hosted-webapp/index.html +14 -14
- package/files/templates/tv-sdk-templates/js-service/helloworld_service.js +39 -39
- package/files/templates/tv-sdk-templates/packageinfo/packageinfo.json +3 -3
- package/files/templates/tv-sdk-templates/serviceinfo/package.json +11 -11
- package/files/templates/tv-sdk-templates/serviceinfo/services.json +8 -8
- package/files/templates/tv-sdk-templates/webicon/icon.png +0 -0
- package/files/templates/tv-sdk-templates/webicon/largeIcon.png +0 -0
- package/lib/base/ares.html +40 -40
- package/lib/base/cli-appdata.js +290 -290
- package/lib/base/cli-control.js +44 -44
- package/lib/base/common-tools.js +29 -29
- package/lib/base/error-handler.js +265 -265
- package/lib/base/file-watcher.js +155 -155
- package/lib/base/help-format.js +147 -147
- package/lib/base/luna.js +178 -178
- package/lib/base/novacom.js +1202 -1191
- package/lib/base/sdkenv.js +59 -59
- package/lib/base/server.js +137 -137
- package/lib/base/setup-device.js +335 -328
- package/lib/base/version-tools.js +79 -79
- package/lib/device.js +1419 -1419
- package/lib/generator.js +377 -377
- package/lib/inspect.js +493 -494
- package/lib/install.js +463 -463
- package/lib/launch.js +605 -605
- package/lib/log.js +584 -584
- package/lib/package.js +2147 -2129
- package/lib/pull.js +231 -231
- package/lib/pusher.js +210 -210
- package/lib/session.js +74 -74
- package/lib/shell.js +193 -193
- package/lib/tar-filter-pack.js +62 -62
- package/lib/util/copy.js +31 -31
- package/lib/util/createFileName.js +40 -40
- package/lib/util/eof.js +30 -30
- package/lib/util/json.js +63 -63
- package/lib/util/merge.js +14 -14
- package/lib/util/objclone.js +40 -40
- package/lib/util/spinner.js +37 -37
- package/npm-shrinkwrap.json +9242 -9116
- package/package.json +100 -100
- package/scripts/postinstall.js +24 -24
- package/spec/helpers/reporter.js +65 -65
- package/spec/jsSpecs/apiTest/generator.spec.js +372 -372
- package/spec/jsSpecs/apiTest/inspector.spec.js +89 -89
- package/spec/jsSpecs/apiTest/installer.spec.js +67 -67
- package/spec/jsSpecs/apiTest/launcher.spec.js +150 -150
- package/spec/jsSpecs/apiTest/packager.spec.js +194 -194
- package/spec/jsSpecs/apiTest/puller.spec.js +101 -101
- package/spec/jsSpecs/apiTest/pusher.spec.js +103 -103
- package/spec/jsSpecs/apiTest/server.spec.js +115 -115
- package/spec/jsSpecs/apiTest/setupDevice.spec.js +93 -93
- package/spec/jsSpecs/apiTest/shell.spec.js +49 -49
- package/spec/jsSpecs/ares-config.spec.js +78 -78
- package/spec/jsSpecs/ares-device.spec.js +443 -443
- package/spec/jsSpecs/ares-generate.spec.js +397 -397
- package/spec/jsSpecs/ares-inspect.spec.js +252 -252
- package/spec/jsSpecs/ares-install.spec.js +150 -150
- package/spec/jsSpecs/ares-launch.spec.js +301 -301
- package/spec/jsSpecs/ares-log.spec.js +824 -824
- package/spec/jsSpecs/ares-novacom.spec.js +149 -149
- package/spec/jsSpecs/ares-package.spec.js +1211 -1211
- package/spec/jsSpecs/ares-pull.spec.js +157 -157
- package/spec/jsSpecs/ares-push.spec.js +146 -146
- package/spec/jsSpecs/ares-server.spec.js +160 -160
- package/spec/jsSpecs/ares-setup-device.spec.js +300 -281
- package/spec/jsSpecs/ares-shell.spec.js +220 -220
- package/spec/jsSpecs/ares.spec.js +83 -83
- package/spec/jsSpecs/common-spec.js +169 -169
- package/spec/support/jasmine.json +22 -22
- package/spec/tempFiles/nativeApp/auto/pkg_arm64/GLES2 +0 -0
- package/spec/tempFiles/nativeApp/auto/pkg_arm64/appinfo.json +9 -9
- package/spec/tempFiles/nativeApp/ose/pkg_arm/Hello +0 -0
- package/spec/tempFiles/nativeApp/ose/pkg_arm/appinfo.json +8 -8
- package/spec/tempFiles/nativeApp/ose/pkg_arm/package.properties +2 -2
- package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/Hello +0 -0
- package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/appinfo.json +9 -9
- package/spec/tempFiles/nativeApp/rsi/pkg_x86/GLES2 +0 -0
- package/spec/tempFiles/nativeApp/rsi/pkg_x86/appinfo.json +9 -9
- package/spec/tempFiles/sign/sign.crt +32 -32
- package/spec/tempFiles/sign/signPriv.key +52 -52
- package/spec/test_data/ares-generate.json +41 -41
- package/spec/test_data/ares.json +33 -33
package/lib/base/file-watcher.js
CHANGED
|
@@ -1,155 +1,155 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024 LG Electronics Inc.
|
|
3
|
-
*
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const chokidar = require('chokidar');
|
|
8
|
-
const path = require('path');
|
|
9
|
-
const fs = require('fs');
|
|
10
|
-
const npmlog = require('npmlog');
|
|
11
|
-
const luna = require('./luna');
|
|
12
|
-
const errHndl = require('./error-handler');
|
|
13
|
-
|
|
14
|
-
(function() {
|
|
15
|
-
const log = npmlog;
|
|
16
|
-
log.heading = 'fileWatcher';
|
|
17
|
-
log.level = 'warn';
|
|
18
|
-
let isCalled = false;
|
|
19
|
-
const ignoreListFile = '.reloadignore';
|
|
20
|
-
|
|
21
|
-
const fileWatcher = {
|
|
22
|
-
/**
|
|
23
|
-
* @property {Object} log an npm log instance
|
|
24
|
-
*/
|
|
25
|
-
log: log,
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Start to watch the given path in local PC
|
|
29
|
-
* and relaunch the hosted app when any event is triggered
|
|
30
|
-
* @param {Object} options
|
|
31
|
-
* @property options {String} device the device to connect to
|
|
32
|
-
* @property options {String} directory path to watch
|
|
33
|
-
*/
|
|
34
|
-
watch: function(options, params) {
|
|
35
|
-
log.verbose('file-watcher#watch()');
|
|
36
|
-
const watchDir = options.hostedurl;
|
|
37
|
-
const watcher = this._startWatcher(watchDir);
|
|
38
|
-
|
|
39
|
-
watcher.on('all', (event, filePath) => {
|
|
40
|
-
log.verbose('file-watcher#watch():', event, filePath);
|
|
41
|
-
if (path.basename(filePath) === ignoreListFile) {
|
|
42
|
-
// Close and restart watcher with modified watch option
|
|
43
|
-
watcher.close().then(() => {
|
|
44
|
-
log.verbose('file-watcher#watch():', 'ignoreListFile changed');
|
|
45
|
-
this.watch(options);
|
|
46
|
-
});
|
|
47
|
-
} else {
|
|
48
|
-
this._launch(options, params, function(err) {
|
|
49
|
-
if (err) {
|
|
50
|
-
console.log('Failed to relaunch Ares Hosted App');
|
|
51
|
-
log.error(err.toString());
|
|
52
|
-
log.verbose(err.stack);
|
|
53
|
-
}
|
|
54
|
-
return;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
watcher.on('error', (err) => {
|
|
60
|
-
log.error(`Watcher error: ${err}`);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
process.on("SIGINT", function() {
|
|
64
|
-
watcher.close().then(() => {
|
|
65
|
-
log.verbose('file-watcher#watch():', 'SIGINT is detected, watcher close', watchDir);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
_startWatcher: function(watchDir) {
|
|
71
|
-
const ignoredFiles = this._readIgnoreList(watchDir);
|
|
72
|
-
log.verbose('file-watcher#_startWatcher():', 'ignored', ignoredFiles);
|
|
73
|
-
const watchOptions = {
|
|
74
|
-
ignored: ignoredFiles,
|
|
75
|
-
ignoreInitial: true
|
|
76
|
-
};
|
|
77
|
-
return chokidar.watch(watchDir, watchOptions);
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
_readIgnoreList: function(watchDir) {
|
|
81
|
-
const ignoreListFilePath = path.join(watchDir, ignoreListFile);
|
|
82
|
-
log.verbose('file-watcher#_readIgnoreList():', ignoreListFilePath);
|
|
83
|
-
if (fs.existsSync(ignoreListFilePath)) {
|
|
84
|
-
try {
|
|
85
|
-
// read and parse ignoreListFile into an array
|
|
86
|
-
const ignoreListStr = fs.readFileSync(ignoreListFilePath, 'utf-8');
|
|
87
|
-
log.silly('file-watcher#_readIgnoreList():', 'fs.readFileSync:', ignoreListStr);
|
|
88
|
-
const ignoreListArr = ignoreListStr.split(/\r?\n/);
|
|
89
|
-
for (let i = 0; i < ignoreListArr.length; i++) {
|
|
90
|
-
// check if empty
|
|
91
|
-
if (ignoreListArr[i] === '') {
|
|
92
|
-
ignoreListArr.splice(i, 1);
|
|
93
|
-
i--;
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
// check if path is absolute, otherwise change to absolute
|
|
97
|
-
if (ignoreListArr[i] && !path.isAbsolute(ignoreListArr[i])) {
|
|
98
|
-
if (ignoreListArr[i].indexOf('**') === 0) {
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
ignoreListArr[i] = path.join(watchDir, ignoreListArr[i]);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return ignoreListArr;
|
|
105
|
-
} catch (err) {
|
|
106
|
-
log.error(err);
|
|
107
|
-
return [];
|
|
108
|
-
}
|
|
109
|
-
} else {
|
|
110
|
-
return [];
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
_launch: function(options, params, next) {
|
|
115
|
-
if (isCalled) {
|
|
116
|
-
return;
|
|
117
|
-
} else {
|
|
118
|
-
isCalled = true;
|
|
119
|
-
}
|
|
120
|
-
const target = options.session.getDevice();
|
|
121
|
-
const addr = target.lunaAddr.launch;
|
|
122
|
-
const returnValue = addr.returnValue.split('.');
|
|
123
|
-
const param = {
|
|
124
|
-
// luna param
|
|
125
|
-
id: options.appId,
|
|
126
|
-
subscribe: false,
|
|
127
|
-
params: params
|
|
128
|
-
};
|
|
129
|
-
luna.send(options, addr, param, function(lineObj, next) {
|
|
130
|
-
log.silly('file-watcher#_launch():', 'Relaunch lineObj:', lineObj);
|
|
131
|
-
let resultValue = lineObj;
|
|
132
|
-
|
|
133
|
-
for (let index = 1; index < returnValue.length; index++) {
|
|
134
|
-
resultValue = resultValue[returnValue[index]];
|
|
135
|
-
}
|
|
136
|
-
if (resultValue) {
|
|
137
|
-
// success: stop
|
|
138
|
-
log.verbose('file-watcher#_launch():', 'Relaunch success');
|
|
139
|
-
isCalled = false;
|
|
140
|
-
next(null);
|
|
141
|
-
} else {
|
|
142
|
-
// failure: stop
|
|
143
|
-
log.verbose('file-watcher#_launch():', 'Relaunch failure');
|
|
144
|
-
isCalled = false;
|
|
145
|
-
next(errHndl.getErrMsg("INVALID_OBJECT"));
|
|
146
|
-
}
|
|
147
|
-
}, next);
|
|
148
|
-
},
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
if (typeof module !== 'undefined' && module.exports) {
|
|
152
|
-
module.exports = fileWatcher;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
}());
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 LG Electronics Inc.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const chokidar = require('chokidar');
|
|
8
|
+
const path = require('path');
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
const npmlog = require('npmlog');
|
|
11
|
+
const luna = require('./luna');
|
|
12
|
+
const errHndl = require('./error-handler');
|
|
13
|
+
|
|
14
|
+
(function() {
|
|
15
|
+
const log = npmlog;
|
|
16
|
+
log.heading = 'fileWatcher';
|
|
17
|
+
log.level = 'warn';
|
|
18
|
+
let isCalled = false;
|
|
19
|
+
const ignoreListFile = '.reloadignore';
|
|
20
|
+
|
|
21
|
+
const fileWatcher = {
|
|
22
|
+
/**
|
|
23
|
+
* @property {Object} log an npm log instance
|
|
24
|
+
*/
|
|
25
|
+
log: log,
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Start to watch the given path in local PC
|
|
29
|
+
* and relaunch the hosted app when any event is triggered
|
|
30
|
+
* @param {Object} options
|
|
31
|
+
* @property options {String} device the device to connect to
|
|
32
|
+
* @property options {String} directory path to watch
|
|
33
|
+
*/
|
|
34
|
+
watch: function(options, params) {
|
|
35
|
+
log.verbose('file-watcher#watch()');
|
|
36
|
+
const watchDir = options.hostedurl;
|
|
37
|
+
const watcher = this._startWatcher(watchDir);
|
|
38
|
+
|
|
39
|
+
watcher.on('all', (event, filePath) => {
|
|
40
|
+
log.verbose('file-watcher#watch():', event, filePath);
|
|
41
|
+
if (path.basename(filePath) === ignoreListFile) {
|
|
42
|
+
// Close and restart watcher with modified watch option
|
|
43
|
+
watcher.close().then(() => {
|
|
44
|
+
log.verbose('file-watcher#watch():', 'ignoreListFile changed');
|
|
45
|
+
this.watch(options);
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
this._launch(options, params, function(err) {
|
|
49
|
+
if (err) {
|
|
50
|
+
console.log('Failed to relaunch Ares Hosted App');
|
|
51
|
+
log.error(err.toString());
|
|
52
|
+
log.verbose(err.stack);
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
watcher.on('error', (err) => {
|
|
60
|
+
log.error(`Watcher error: ${err}`);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
process.on("SIGINT", function() {
|
|
64
|
+
watcher.close().then(() => {
|
|
65
|
+
log.verbose('file-watcher#watch():', 'SIGINT is detected, watcher close', watchDir);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
_startWatcher: function(watchDir) {
|
|
71
|
+
const ignoredFiles = this._readIgnoreList(watchDir);
|
|
72
|
+
log.verbose('file-watcher#_startWatcher():', 'ignored', ignoredFiles);
|
|
73
|
+
const watchOptions = {
|
|
74
|
+
ignored: ignoredFiles,
|
|
75
|
+
ignoreInitial: true
|
|
76
|
+
};
|
|
77
|
+
return chokidar.watch(watchDir, watchOptions);
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
_readIgnoreList: function(watchDir) {
|
|
81
|
+
const ignoreListFilePath = path.join(watchDir, ignoreListFile);
|
|
82
|
+
log.verbose('file-watcher#_readIgnoreList():', ignoreListFilePath);
|
|
83
|
+
if (fs.existsSync(ignoreListFilePath)) {
|
|
84
|
+
try {
|
|
85
|
+
// read and parse ignoreListFile into an array
|
|
86
|
+
const ignoreListStr = fs.readFileSync(ignoreListFilePath, 'utf-8');
|
|
87
|
+
log.silly('file-watcher#_readIgnoreList():', 'fs.readFileSync:', ignoreListStr);
|
|
88
|
+
const ignoreListArr = ignoreListStr.split(/\r?\n/);
|
|
89
|
+
for (let i = 0; i < ignoreListArr.length; i++) {
|
|
90
|
+
// check if empty
|
|
91
|
+
if (ignoreListArr[i] === '') {
|
|
92
|
+
ignoreListArr.splice(i, 1);
|
|
93
|
+
i--;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
// check if path is absolute, otherwise change to absolute
|
|
97
|
+
if (ignoreListArr[i] && !path.isAbsolute(ignoreListArr[i])) {
|
|
98
|
+
if (ignoreListArr[i].indexOf('**') === 0) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
ignoreListArr[i] = path.join(watchDir, ignoreListArr[i]);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return ignoreListArr;
|
|
105
|
+
} catch (err) {
|
|
106
|
+
log.error(err);
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
} else {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
_launch: function(options, params, next) {
|
|
115
|
+
if (isCalled) {
|
|
116
|
+
return;
|
|
117
|
+
} else {
|
|
118
|
+
isCalled = true;
|
|
119
|
+
}
|
|
120
|
+
const target = options.session.getDevice();
|
|
121
|
+
const addr = target.lunaAddr.launch;
|
|
122
|
+
const returnValue = addr.returnValue.split('.');
|
|
123
|
+
const param = {
|
|
124
|
+
// luna param
|
|
125
|
+
id: options.appId,
|
|
126
|
+
subscribe: false,
|
|
127
|
+
params: params
|
|
128
|
+
};
|
|
129
|
+
luna.send(options, addr, param, function(lineObj, next) {
|
|
130
|
+
log.silly('file-watcher#_launch():', 'Relaunch lineObj:', lineObj);
|
|
131
|
+
let resultValue = lineObj;
|
|
132
|
+
|
|
133
|
+
for (let index = 1; index < returnValue.length; index++) {
|
|
134
|
+
resultValue = resultValue[returnValue[index]];
|
|
135
|
+
}
|
|
136
|
+
if (resultValue) {
|
|
137
|
+
// success: stop
|
|
138
|
+
log.verbose('file-watcher#_launch():', 'Relaunch success');
|
|
139
|
+
isCalled = false;
|
|
140
|
+
next(null);
|
|
141
|
+
} else {
|
|
142
|
+
// failure: stop
|
|
143
|
+
log.verbose('file-watcher#_launch():', 'Relaunch failure');
|
|
144
|
+
isCalled = false;
|
|
145
|
+
next(errHndl.getErrMsg("INVALID_OBJECT"));
|
|
146
|
+
}
|
|
147
|
+
}, next);
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
if (typeof module !== 'undefined' && module.exports) {
|
|
152
|
+
module.exports = fileWatcher;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
}());
|
package/lib/base/help-format.js
CHANGED
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2020-2024 LG Electronics Inc.
|
|
3
|
-
*
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const fs = require('fs'),
|
|
8
|
-
path = require('path'),
|
|
9
|
-
sprintf = require('sprintf-js').sprintf;
|
|
10
|
-
|
|
11
|
-
(function() {
|
|
12
|
-
const helpFormat = {};
|
|
13
|
-
|
|
14
|
-
helpFormat.display = function(processName, profile, hiddenFlag) {
|
|
15
|
-
const helpFile = path.join(__dirname, '../../files/help', processName + '.help');
|
|
16
|
-
let helpString = [];
|
|
17
|
-
this.profile = profile;
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
const data = JSON.parse(fs.readFileSync(helpFile, 'utf8'));
|
|
21
|
-
data.display.forEach(function(prop) {
|
|
22
|
-
helpString.push("");
|
|
23
|
-
if (!data.notitle || data.notitle.indexOf(prop) === -1) {
|
|
24
|
-
helpString.push(prop.toUpperCase());
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (data.notab && data.notab.indexOf(prop) !== -1) {
|
|
28
|
-
helpString = helpString.concat(helpFormat.stringFormat(data[prop], false, hiddenFlag));
|
|
29
|
-
} else {
|
|
30
|
-
helpString = helpString.concat(helpFormat.stringFormat(data[prop], true, hiddenFlag));
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
helpFormat.print(helpString);
|
|
34
|
-
} catch (err) {
|
|
35
|
-
console.log(err);
|
|
36
|
-
throw err;
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
helpFormat.string = function(data, tab) {
|
|
41
|
-
let helpString = "";
|
|
42
|
-
if (data === undefined) return [];
|
|
43
|
-
|
|
44
|
-
data = data.split("@TAB@");
|
|
45
|
-
for (const index in data) {
|
|
46
|
-
if (index !== 0 || tab) {
|
|
47
|
-
helpString += sprintf("\t%-32s", data[index]);
|
|
48
|
-
} else {
|
|
49
|
-
helpString += sprintf(data[index]);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return [helpString];
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
helpFormat.stringArray = function(data, tab) {
|
|
56
|
-
let helpString = [];
|
|
57
|
-
for (const index in data) {
|
|
58
|
-
helpString = helpString.concat(helpFormat.stringFormat(data[index], tab));
|
|
59
|
-
}
|
|
60
|
-
return helpString;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
helpFormat.optionObject = function(data, tab) {
|
|
64
|
-
let helpString = [],
|
|
65
|
-
optionList = [].concat(data.default||[]).concat(data.default-process||[]);
|
|
66
|
-
optionList = optionList.concat(data[this.profile]||[]).concat(data[process.platform]||[]);
|
|
67
|
-
for (const index in optionList) {
|
|
68
|
-
helpString = helpString.concat(helpFormat.stringFormat(data[optionList[index]], tab));
|
|
69
|
-
}
|
|
70
|
-
return helpString;
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
helpFormat.stringObject = function(data, tab) {
|
|
74
|
-
const defaultData = [].concat(data.default||[]).concat(data.default-process||[]),
|
|
75
|
-
currentData = [].concat(data[this.profile]||[]).concat(data[process.platform]||[]);
|
|
76
|
-
let helpString = [];
|
|
77
|
-
helpString = helpString.concat(helpFormat.stringFormat(defaultData.concat(currentData), tab));
|
|
78
|
-
return helpString;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
helpFormat.hiddenObject = function(data, tab, hiddenFlag) {
|
|
82
|
-
return (hiddenFlag) ? helpFormat.stringObject(data, tab) : [];
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
helpFormat.stringFormat = function(data, tab, hiddenFlag) {
|
|
86
|
-
let helpString = [];
|
|
87
|
-
if (Array.isArray(data)) {
|
|
88
|
-
helpString = helpString.concat(helpFormat.stringArray(data, tab));
|
|
89
|
-
} else if (typeof data === 'object') {
|
|
90
|
-
if (data.cmdOpt && data.cmdOpt === 'option') {
|
|
91
|
-
helpString = helpString.concat(helpFormat.optionObject(data, tab));
|
|
92
|
-
}
|
|
93
|
-
else if (data.cmdOpt && data.cmdOpt === 'hidden') {
|
|
94
|
-
helpString = helpString.concat(helpFormat.hiddenObject(data, tab, hiddenFlag));
|
|
95
|
-
} else {
|
|
96
|
-
helpString = helpString.concat(helpFormat.stringObject(data, tab));
|
|
97
|
-
}
|
|
98
|
-
} else {
|
|
99
|
-
helpString = helpString.concat(helpFormat.string(data, tab));
|
|
100
|
-
}
|
|
101
|
-
return helpString;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
helpFormat.format = function(msg) {
|
|
105
|
-
let helpString = "",
|
|
106
|
-
dependOnPlatform = false,
|
|
107
|
-
accept = false;
|
|
108
|
-
msg = [].concat(msg);
|
|
109
|
-
|
|
110
|
-
msg.forEach(function(platform) {
|
|
111
|
-
if (["win32", "linux", "darwin"].indexOf(platform) !== -1) {
|
|
112
|
-
dependOnPlatform = true;
|
|
113
|
-
if (platform === process.platform) {
|
|
114
|
-
accept = true;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
let idx = 0;
|
|
120
|
-
if (dependOnPlatform === true) {
|
|
121
|
-
if (accept === true) {
|
|
122
|
-
idx = 1;
|
|
123
|
-
} else {
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
for (; idx < arguments.length; idx++) {
|
|
129
|
-
helpString = helpString.concat(sprintf('\t%-30s', arguments[idx]));
|
|
130
|
-
}
|
|
131
|
-
return helpString;
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
helpFormat.print = function(arrayStrHelp) {
|
|
135
|
-
arrayStrHelp = [].concat(arrayStrHelp);
|
|
136
|
-
|
|
137
|
-
arrayStrHelp.forEach(function(line) {
|
|
138
|
-
if (typeof line === 'string') {
|
|
139
|
-
console.log(line);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
if (typeof module !== 'undefined' && module.exports) {
|
|
145
|
-
module.exports = helpFormat;
|
|
146
|
-
}
|
|
147
|
-
}());
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2020-2024 LG Electronics Inc.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const fs = require('fs'),
|
|
8
|
+
path = require('path'),
|
|
9
|
+
sprintf = require('sprintf-js').sprintf;
|
|
10
|
+
|
|
11
|
+
(function() {
|
|
12
|
+
const helpFormat = {};
|
|
13
|
+
|
|
14
|
+
helpFormat.display = function(processName, profile, hiddenFlag) {
|
|
15
|
+
const helpFile = path.join(__dirname, '../../files/help', processName + '.help');
|
|
16
|
+
let helpString = [];
|
|
17
|
+
this.profile = profile;
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
const data = JSON.parse(fs.readFileSync(helpFile, 'utf8'));
|
|
21
|
+
data.display.forEach(function(prop) {
|
|
22
|
+
helpString.push("");
|
|
23
|
+
if (!data.notitle || data.notitle.indexOf(prop) === -1) {
|
|
24
|
+
helpString.push(prop.toUpperCase());
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (data.notab && data.notab.indexOf(prop) !== -1) {
|
|
28
|
+
helpString = helpString.concat(helpFormat.stringFormat(data[prop], false, hiddenFlag));
|
|
29
|
+
} else {
|
|
30
|
+
helpString = helpString.concat(helpFormat.stringFormat(data[prop], true, hiddenFlag));
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
helpFormat.print(helpString);
|
|
34
|
+
} catch (err) {
|
|
35
|
+
console.log(err);
|
|
36
|
+
throw err;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
helpFormat.string = function(data, tab) {
|
|
41
|
+
let helpString = "";
|
|
42
|
+
if (data === undefined) return [];
|
|
43
|
+
|
|
44
|
+
data = data.split("@TAB@");
|
|
45
|
+
for (const index in data) {
|
|
46
|
+
if (index !== 0 || tab) {
|
|
47
|
+
helpString += sprintf("\t%-32s", data[index]);
|
|
48
|
+
} else {
|
|
49
|
+
helpString += sprintf(data[index]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return [helpString];
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
helpFormat.stringArray = function(data, tab) {
|
|
56
|
+
let helpString = [];
|
|
57
|
+
for (const index in data) {
|
|
58
|
+
helpString = helpString.concat(helpFormat.stringFormat(data[index], tab));
|
|
59
|
+
}
|
|
60
|
+
return helpString;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
helpFormat.optionObject = function(data, tab) {
|
|
64
|
+
let helpString = [],
|
|
65
|
+
optionList = [].concat(data.default||[]).concat(data.default-process||[]);
|
|
66
|
+
optionList = optionList.concat(data[this.profile]||[]).concat(data[process.platform]||[]);
|
|
67
|
+
for (const index in optionList) {
|
|
68
|
+
helpString = helpString.concat(helpFormat.stringFormat(data[optionList[index]], tab));
|
|
69
|
+
}
|
|
70
|
+
return helpString;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
helpFormat.stringObject = function(data, tab) {
|
|
74
|
+
const defaultData = [].concat(data.default||[]).concat(data.default-process||[]),
|
|
75
|
+
currentData = [].concat(data[this.profile]||[]).concat(data[process.platform]||[]);
|
|
76
|
+
let helpString = [];
|
|
77
|
+
helpString = helpString.concat(helpFormat.stringFormat(defaultData.concat(currentData), tab));
|
|
78
|
+
return helpString;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
helpFormat.hiddenObject = function(data, tab, hiddenFlag) {
|
|
82
|
+
return (hiddenFlag) ? helpFormat.stringObject(data, tab) : [];
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
helpFormat.stringFormat = function(data, tab, hiddenFlag) {
|
|
86
|
+
let helpString = [];
|
|
87
|
+
if (Array.isArray(data)) {
|
|
88
|
+
helpString = helpString.concat(helpFormat.stringArray(data, tab));
|
|
89
|
+
} else if (typeof data === 'object') {
|
|
90
|
+
if (data.cmdOpt && data.cmdOpt === 'option') {
|
|
91
|
+
helpString = helpString.concat(helpFormat.optionObject(data, tab));
|
|
92
|
+
}
|
|
93
|
+
else if (data.cmdOpt && data.cmdOpt === 'hidden') {
|
|
94
|
+
helpString = helpString.concat(helpFormat.hiddenObject(data, tab, hiddenFlag));
|
|
95
|
+
} else {
|
|
96
|
+
helpString = helpString.concat(helpFormat.stringObject(data, tab));
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
helpString = helpString.concat(helpFormat.string(data, tab));
|
|
100
|
+
}
|
|
101
|
+
return helpString;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
helpFormat.format = function(msg) {
|
|
105
|
+
let helpString = "",
|
|
106
|
+
dependOnPlatform = false,
|
|
107
|
+
accept = false;
|
|
108
|
+
msg = [].concat(msg);
|
|
109
|
+
|
|
110
|
+
msg.forEach(function(platform) {
|
|
111
|
+
if (["win32", "linux", "darwin"].indexOf(platform) !== -1) {
|
|
112
|
+
dependOnPlatform = true;
|
|
113
|
+
if (platform === process.platform) {
|
|
114
|
+
accept = true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
let idx = 0;
|
|
120
|
+
if (dependOnPlatform === true) {
|
|
121
|
+
if (accept === true) {
|
|
122
|
+
idx = 1;
|
|
123
|
+
} else {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
for (; idx < arguments.length; idx++) {
|
|
129
|
+
helpString = helpString.concat(sprintf('\t%-30s', arguments[idx]));
|
|
130
|
+
}
|
|
131
|
+
return helpString;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
helpFormat.print = function(arrayStrHelp) {
|
|
135
|
+
arrayStrHelp = [].concat(arrayStrHelp);
|
|
136
|
+
|
|
137
|
+
arrayStrHelp.forEach(function(line) {
|
|
138
|
+
if (typeof line === 'string') {
|
|
139
|
+
console.log(line);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
if (typeof module !== 'undefined' && module.exports) {
|
|
145
|
+
module.exports = helpFormat;
|
|
146
|
+
}
|
|
147
|
+
}());
|