@webos-tools/cli 3.2.0 → 3.2.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/.vscode/c_cpp_properties.json +21 -0
- package/.vscode/launch.json +97 -0
- package/.vscode/settings.json +13 -0
- package/.vscode/tasks.json +32 -0
- package/APIs.js +79 -79
- package/CHANGELOG.md +11 -5
- package/LICENSE +201 -201
- package/bin/ares-config.js +1 -1
- package/bin/ares-device-info.js +30 -30
- package/bin/ares-generate.js +274 -274
- package/bin/ares-inspect.js +179 -179
- package/bin/ares-install.js +223 -223
- package/bin/ares-log.js +259 -259
- 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 +6 -10
- package/bin/ares-shell.js +132 -132
- package/bin/ares.js +166 -166
- package/files/conf/ares.json +1 -2
- package/files/conf/ipk.json +30 -30
- package/files/conf/novacom-devices.json +2 -2
- 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/webos_emul +27 -27
- package/files/conf-base/env/sdk-apollo.json +8 -8
- 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-apollo.json +29 -29
- package/files/conf-base/profile/config-ose.json +29 -29
- package/files/conf-base/profile/config-tv.json +31 -31
- 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/query/signage/query-app.json +1 -1
- package/files/conf-base/query/signage/query-service.json +1 -1
- 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-device.help +109 -109
- package/files/help/ares-install.help +95 -95
- package/files/help/ares-launch.help +1 -1
- 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-pull.help +38 -38
- package/files/help/ares-push.help +38 -38
- package/files/help/ares-server.help +44 -44
- package/files/help/ares-shell.help +42 -42
- package/files/help/ares.help +52 -52
- package/files/help/readme.help +23 -23
- package/files/schema/ApplicationDescription.schema +319 -319
- package/files/templates/apollo-sdk-templates/appinfo/appinfo.json +10 -10
- package/files/templates/apollo-sdk-templates/bootplate-web/index.html +88 -88
- package/files/templates/apollo-sdk-templates/hosted-webapp/index.html +13 -13
- package/files/templates/apollo-sdk-templates/js-service/helloclient.js +31 -31
- package/files/templates/apollo-sdk-templates/js-service/helloworld_webos_service.js +188 -188
- package/files/templates/apollo-sdk-templates/serviceinfo/package.json +11 -11
- package/files/templates/apollo-sdk-templates/serviceinfo/services.json +8 -8
- 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/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/signage-sdk-templates/Backlight_Scheduling/index.html +1 -1
- package/files/templates/signage-sdk-templates/Backlight_Scheduling/scheduler.js +2 -3
- package/files/templates/signage-sdk-templates/File_Explorer/index.html +1 -33
- package/files/templates/signage-sdk-templates/File_Explorer/js/Root.js +0 -9
- 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/lib/base/ares.html +40 -40
- package/lib/base/cli-appdata.js +290 -289
- 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 +4 -4
- package/lib/base/sdkenv.js +59 -59
- package/lib/base/server.js +137 -137
- package/lib/base/setup-device.js +2 -2
- package/lib/base/version-tools.js +79 -79
- package/lib/device.js +1419 -1419
- package/lib/generator.js +1 -1
- package/lib/inspect.js +493 -493
- package/lib/log.js +584 -584
- package/lib/package.js +61 -7
- 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 +2 -2
- package/package.json +1 -1
- 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 +88 -88
- package/spec/jsSpecs/ares-device.spec.js +443 -443
- package/spec/jsSpecs/ares-generate.spec.js +397 -401
- package/spec/jsSpecs/ares-inspect.spec.js +252 -252
- package/spec/jsSpecs/ares-install.spec.js +150 -150
- package/spec/jsSpecs/ares-log.spec.js +824 -824
- package/spec/jsSpecs/ares-novacom.spec.js +149 -149
- package/spec/jsSpecs/ares-pull.spec.js +157 -157
- package/spec/jsSpecs/ares-push.spec.js +146 -146
- package/spec/jsSpecs/ares-setup-device.spec.js +1 -0
- package/spec/jsSpecs/ares-shell.spec.js +220 -220
- package/spec/jsSpecs/ares.spec.js +83 -83
- package/spec/support/jasmine.json +22 -22
- package/spec/tempFiles/nativeApp/auto/pkg_arm64/appinfo.json +9 -9
- 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/appinfo.json +9 -9
- 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 +58 -91
- package/spec/test_data/ares.json +50 -50
- package/webos-tools-cli-3.2.1.tgz +0 -0
- package/webos-tools-cli-3.2.0.tgz +0 -0
|
@@ -1,265 +1,265 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2020-2024 LG Electronics Inc.
|
|
3
|
-
*
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const log = require('npmlog'),
|
|
8
|
-
spinner = require('../util/spinner');
|
|
9
|
-
|
|
10
|
-
(function() {
|
|
11
|
-
const errMsgHdlr = {},
|
|
12
|
-
ErrMsgMap = {
|
|
13
|
-
// service's error message, common
|
|
14
|
-
"for category \"/dev\"": "Please enable \"Developer options\" on your device",
|
|
15
|
-
|
|
16
|
-
// sessionmanager
|
|
17
|
-
"SELECT_PROFILE": "Please select the profile on the display",
|
|
18
|
-
|
|
19
|
-
// appinstalld
|
|
20
|
-
"failed to extract ipk file": "Please check whether the ipk file is packaged by CLI or not",
|
|
21
|
-
"Failed to parse control": "Please check whether the ipk file is packaged by CLI or not",
|
|
22
|
-
"Failed to extract package": "Please check whether the ipk file is packaged by CLI or not",
|
|
23
|
-
"duplicate command": "Please wait and retry the command",
|
|
24
|
-
"update manifest file failed": "Please wait and retry the command",
|
|
25
|
-
"Cannnot install privileged app on developer mode": "Please change the app id (app id should not start with 'com.lge', 'com.webos', 'com.palm')",
|
|
26
|
-
"Cannnot remove privileged app on developer mode": "You cannot remove the privileged app whose app id start with 'com.lge', 'com.webos', 'com.palm'",
|
|
27
|
-
"unable to execute smack": "Please remove the app and install again",
|
|
28
|
-
"empty session list, cannot query getAppInfo": "Please select the profile on the display",
|
|
29
|
-
"FAILED_REMOVE": "Please check app is installed to device by ares-install -l",
|
|
30
|
-
|
|
31
|
-
// applicationmanager
|
|
32
|
-
"Cannot find proper launchPoint": "The app is not installed app. Please check the list by ares-install -l",
|
|
33
|
-
"is not running": "Please check the list of running apps using ares-launch -r",
|
|
34
|
-
"was not found OR Unsupported Application Type": "The app is not installed. Please check the list of installed apps using ares-install -l",
|
|
35
|
-
"invalid parameters": "Invalid parameters are passed. Please check the parameters",
|
|
36
|
-
"app is locked": "The app is now installing/updating/deleting. Please try again later",
|
|
37
|
-
|
|
38
|
-
// com.webos.service.sessionmanager
|
|
39
|
-
"Service does not exist: com.webos.service.sessionmanager": "This device does not support multiple sessions",
|
|
40
|
-
|
|
41
|
-
// com.webos.surfacemanager
|
|
42
|
-
"ERR_INVALID_DISPLAY": "Please use a valid value for display id",
|
|
43
|
-
|
|
44
|
-
"EACCES": "No permission to execute. Please check the directory permission",
|
|
45
|
-
"EADDRINUSE": "An attempt to bind a server to a local address failed. Please check the IP address or the port number",
|
|
46
|
-
"ECONNREFUSED": "Connection refused. Please check the device IP address or the port number",
|
|
47
|
-
"ECONNRESET": "Unable to connect to the device. Please check the device",
|
|
48
|
-
"ENOENT": "Please check if the path is valid",
|
|
49
|
-
"ENOTDIR": "Please check if the path is valid",
|
|
50
|
-
"EROFS": "Please check if the path is valid",
|
|
51
|
-
"TIME_OUT": "Connection timed out. Please check the device IP address or the port number",
|
|
52
|
-
"NO_FREE_SPACE": "Installation failure. Please check if there is sufficient free space in the disk",
|
|
53
|
-
|
|
54
|
-
// can be external lib error
|
|
55
|
-
"Authentication failure": "ssh authentication failure. Please check the ssh connection info such as password, private key and username again",
|
|
56
|
-
"connect Unknown system": "Please check the device IP address or the port number",
|
|
57
|
-
"Unable to parse private key": "Wrong passphrase for ssh key. Please check passphrase again",
|
|
58
|
-
"Unable to request a pseudo-terminal": "Unable to open terminal (Target does not allow to open pty)",
|
|
59
|
-
|
|
60
|
-
// invalid appinfo, service
|
|
61
|
-
"REQUIRED_FIELD": "Please input required field",
|
|
62
|
-
"INVALID_ID_RULE": "The app/pkg ID should consist of lowercase letters (a-z), numbers (0-9), plus (+) and minus (-) signs and periods (.)",
|
|
63
|
-
"INVALID_VERSION_RULE": "The app/pkg version number should consist of three non-negative integers, separated by dots.\nEach number cannot exceed 9 digits and cannot contain leading zeroes",
|
|
64
|
-
"NOT_EXCLUDE_APPINFO": "You cannot exclude the appinfo.json file",
|
|
65
|
-
"NOT_RELATIVE_PATH_APPINFO": "The pathname must be relative to the directory where the appinfo.json file is located",
|
|
66
|
-
"NO_METAFILE": "No meta file (ex. appinfo.json, services.json) exists in the project directory",
|
|
67
|
-
"NO_COMPONENT_FILE": "There is no component file for webOS package. File:",
|
|
68
|
-
"NO_ACCOUNT": "Account directory is not supported. Please delete the 'account-templates.json' file.",
|
|
69
|
-
"OVER_APPCOUNT": "You can package only one application at once",
|
|
70
|
-
"INVALID_APPID": "App ID must start with package ID",
|
|
71
|
-
"INVALID_SERVICEID": "ServiceID must start with package id",
|
|
72
|
-
"INVALID_RESOURCEID": "Resource ID must start with package ID",
|
|
73
|
-
"FAILED_MINIFY": "Failed to minify code. Please check the source code",
|
|
74
|
-
|
|
75
|
-
// invalid value
|
|
76
|
-
"INVALID_JSON_FORMAT": "Invalid JSON format",
|
|
77
|
-
"INVALID_ARGV": "Please check arguments",
|
|
78
|
-
"INVALID_INTERVAL": "Please use nonnegative integer value for the \"time-interval\" option",
|
|
79
|
-
"INVALID_DISPLAY": "Please use nonnegative integer value for the \"display\" option",
|
|
80
|
-
"INVALID_TEMPLATE": "Invalid template name",
|
|
81
|
-
"INVALID_FILE": "Invalid file",
|
|
82
|
-
"INVALID_VALUE": "Invalid value",
|
|
83
|
-
"INVALID_DEVICENAME": "Invalid device name. The device name should not start with '%' or '$'",
|
|
84
|
-
"INVALID_OBJECT": "Object format error",
|
|
85
|
-
"INVALID_MODE": "Please specify an option, either '--add' or '--modify'",
|
|
86
|
-
"INVALID_REMOVE_MODE": "Please set remove option",
|
|
87
|
-
"INVALID_CAPTURE_FORMAT": "Please specify the file extension(.png, .bmp or .jpg)",
|
|
88
|
-
"INVALID_CSV_FORMAT": "Please change the file extension to .csv",
|
|
89
|
-
"INVALID_IP": "Plese check IP address format",
|
|
90
|
-
"INVALID_COMMAND": "This command is invalid. Please check the supported commands using ares -l",
|
|
91
|
-
"INVALID_COMBINATION": "This options cannot be used with display option",
|
|
92
|
-
|
|
93
|
-
// set value & type error
|
|
94
|
-
"EMPTY_PROFILE": "Profile is empty",
|
|
95
|
-
"EMPTY_VALUE": "Please specify a value",
|
|
96
|
-
"EXISTING_VALUE": "The specified value already exists",
|
|
97
|
-
"EXISTING_FILETYPE_PATH": "A file with the same name at the specified location already exists",
|
|
98
|
-
"SUPPORT_ONLY_IPK": "Only .ipk file is supported. Please check the file extension",
|
|
99
|
-
"NOT_MATCHED_LOGDAEMON": "Logging daemon of CLI should be matched with that of the target device\nPlease change the logging daemon of CLI to same as that of the target device",
|
|
100
|
-
"NOT_MATCHED_LOG": "There are no logs from the ID\nPlease check if the combination of options or the ID are valid",
|
|
101
|
-
"NOT_DIRTYPE_PATH": "The specified path is not a directory",
|
|
102
|
-
"NOT_EXIST_INSPECTOR": "Inspector is not running. Please call stop() after inspect the app",
|
|
103
|
-
"NOT_EXIST_PATH": "The specified path does not exist",
|
|
104
|
-
"NOT_EXIST_LOGDAEMON": "The specified daemon does not exist",
|
|
105
|
-
"NOT_EXIST_LOGFILE": "A log file does not exist in the target device",
|
|
106
|
-
"NOT_EXIST_SERVER": "Server is not running. Please call stop() after running the server",
|
|
107
|
-
"NOT_EXIST_SSHKEY_PASSWD": "Private key file or password does not exist",
|
|
108
|
-
"NOT_EXIST_DISPLAY": "No existing displayId from getSessionList",
|
|
109
|
-
"NOT_EXIST_SIMULATOR": "No existing simulator excutable file which name starting with",
|
|
110
|
-
"NOT_SUPPORT_COMMOND_DEPRECATED": "This command is deprecated. Please use \"ares-device -i\" instead of \"ares-device-info\"",
|
|
111
|
-
"NOT_SUPPORT_COMMOND": "This command is not supported by current profile\nIf you want to use this command, please change profile using \"ares-config\" command\nCurrent profile:",
|
|
112
|
-
"NOT_SUPPORT_OPTION": "This option is not supported by current profile\nIf you want to use this command, please change profile using \"ares-config\" command\nCurrent profile:",
|
|
113
|
-
"NOT_SUPPORT_SESSION": "This device does not support multiple sessions",
|
|
114
|
-
"NOT_SUPPORT_ENYO": "Enyo app packaging is not supported",
|
|
115
|
-
"NOT_SUPPORT_AUTHTYPE": "Not supported auth type",
|
|
116
|
-
"NOT_SUPPORT_RUNNINGLIST": "Not supported method to get running app information",
|
|
117
|
-
"NOT_SUPPORT_JOURNALD": "journald does not support the option",
|
|
118
|
-
"NOT_SUPPORT_PMLOGD": "pmlogd does not support the option",
|
|
119
|
-
"NOT_SUPPORT_XZ": "xz file is not supported. Only .ipk file packaged with the CLI is supported",
|
|
120
|
-
"NOT_USE_WITH_OPTIONS": "Do not use together with options",
|
|
121
|
-
"EMPTY_FILENAME": "Please input log file name from --file-list option",
|
|
122
|
-
"EMPTY_ID": "Please input an ID of an app or service",
|
|
123
|
-
|
|
124
|
-
"USE_WITH_OPTIONS": "Use together with options",
|
|
125
|
-
"USE_PKGID_PKGINFO": "packageId must be provided by using either the '--pkgid' or the '--pkginfofile' option",
|
|
126
|
-
"USE_GDB": "Please use GDB to debug a native serivce",
|
|
127
|
-
"NOT_IMPLEMENTED": "Not implemented",
|
|
128
|
-
"NOT_HANDLE_FILE": "Don't know how to handle",
|
|
129
|
-
"NOT_OVERWRITE_DIR": "Cannot overwrite the directory",
|
|
130
|
-
"NOT_PACKAGE_WITH_OPTION": "Cannot package the app directory with option",
|
|
131
|
-
"NOT_PACKAGE_WITH_PKGDIR": "Cannot package the directory with package directory",
|
|
132
|
-
"NOT_PACKAGE_WITH_RESOURCE": "Cannot package the app or service directory with resource directory",
|
|
133
|
-
"UNMATCHED_DEVICE": "No matched device",
|
|
134
|
-
"CANNOT_REMOVE_DEVICE": "Cannot remove the device",
|
|
135
|
-
"UNMATCHED_DISPLAY_AFFINITY": "Please use the same value for \"display\" and \"displayAffinity\"",
|
|
136
|
-
|
|
137
|
-
"FAILED_CALL_LUNA": "luna-send command failed",
|
|
138
|
-
"FAILED_GET_PORT": "Failed to get Debug port",
|
|
139
|
-
"FAILED_GET_SVCPATH": "Failed to get service installation path",
|
|
140
|
-
"FAILED_GET_SSHKEY": "Failed to get ssh private key",
|
|
141
|
-
"FAILED_TRANSMIT_FILE": "File transmission error. Please try again",
|
|
142
|
-
"FAILED_CREATE_DIR": "Cannot create directory in the destination path - permission denied",
|
|
143
|
-
"FAILED_REMOVE_PACKAGE": "No packages installed or removed",
|
|
144
|
-
"FAILED_FIND_SERVICE": "Failed to find a service with the specified name",
|
|
145
|
-
|
|
146
|
-
"CONNECTED_MULTI_DEVICE": "Multiple devices are connected by novacom. Please specify the target name",
|
|
147
|
-
"SET_DEFAULT_MULTI_DEVICE": "Multiple devices are set to default target. Please reset device list",
|
|
148
|
-
"NEED_ROOT_PERMISSION": "Unable to connect to the target device. root access required",
|
|
149
|
-
"MISSING_CALLBACK": "Missing completion callback",
|
|
150
|
-
"USING_WEBINSPECTOR": "Web Inspector is already connected with another browser. Please close the previous connection",
|
|
151
|
-
"UNKNOWN_OPERATOR": "Unknown operator",
|
|
152
|
-
"UNABLE_USE_SFTP": "Unable to use sftp",
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
// Pure CLI Tip error : errKey(string), option, value
|
|
156
|
-
// Luna service error : errKey("FAILED_CALL_LUNA"- string), option, null, heading(service name)
|
|
157
|
-
// System call & ssh call error : errKey(object)
|
|
158
|
-
errMsgHdlr.getErrMsg = function(errKey, option, value, heading) {
|
|
159
|
-
log.silly("error-handler#getErrMsg()", "errKey:", errKey, ", option:", option, ", value:", value, ", heading:", heading);
|
|
160
|
-
// Return errKey when errKey is null
|
|
161
|
-
if (!errKey) {
|
|
162
|
-
return errKey;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
const orgErrKey = errKey,
|
|
166
|
-
resultErr = [];
|
|
167
|
-
let mapErrMsg = "";
|
|
168
|
-
|
|
169
|
-
// Handle systemcall or ssh call err message. errKey is must be object
|
|
170
|
-
if (typeof orgErrKey === "object") {
|
|
171
|
-
// Change errkey and heading to create Tips meessage;
|
|
172
|
-
let sysHeading = "syscall",
|
|
173
|
-
sysErrKey = orgErrKey.code;
|
|
174
|
-
|
|
175
|
-
// Handle as "ssh execution error"
|
|
176
|
-
if (!orgErrKey.syscall) {
|
|
177
|
-
sysHeading = "ssh exec";
|
|
178
|
-
sysErrKey = orgErrKey.message.trim();
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
const sysCallErr = new CLIError(sysHeading, orgErrKey.message.trim());
|
|
182
|
-
if (sysCallErr.message) {
|
|
183
|
-
resultErr.push(sysCallErr);
|
|
184
|
-
}
|
|
185
|
-
// Set parametars to create Tips message
|
|
186
|
-
errKey = sysErrKey;
|
|
187
|
-
option = orgErrKey.path;
|
|
188
|
-
value = "";
|
|
189
|
-
heading = "";
|
|
190
|
-
|
|
191
|
-
} else if (orgErrKey === "FAILED_CALL_LUNA" && heading) {
|
|
192
|
-
mapErrMsg = errMsgHdlr.getErrStr(orgErrKey, option, value);
|
|
193
|
-
if (!mapErrMsg) {
|
|
194
|
-
return orgErrKey; // Do not change modify this line.
|
|
195
|
-
}
|
|
196
|
-
const lunaErr = new CLIError(heading, mapErrMsg);
|
|
197
|
-
if (lunaErr.message) {
|
|
198
|
-
resultErr.push(lunaErr);
|
|
199
|
-
}
|
|
200
|
-
// Set parametars to create Tips message
|
|
201
|
-
errKey = option;
|
|
202
|
-
option = "";
|
|
203
|
-
value = "";
|
|
204
|
-
heading = "";
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// Create Tips message
|
|
208
|
-
mapErrMsg = errMsgHdlr.getErrStr(errKey, option, value);
|
|
209
|
-
|
|
210
|
-
if (mapErrMsg) {
|
|
211
|
-
const tipsErr = new CLIError(heading, mapErrMsg);
|
|
212
|
-
if (tipsErr.message) {
|
|
213
|
-
resultErr.push(tipsErr);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// Defense code to stop the spinner before showing an error message.
|
|
218
|
-
spinner.stop();
|
|
219
|
-
if (resultErr.length > 0) {
|
|
220
|
-
return resultErr;
|
|
221
|
-
} else {
|
|
222
|
-
return orgErrKey;
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
errMsgHdlr.getErrStr = function(errKey, option, value) {
|
|
227
|
-
log.silly("error-handler#getErrStr()", "errKey:", errKey, ", option:", option, ", value:", value);
|
|
228
|
-
|
|
229
|
-
if (!errKey) {
|
|
230
|
-
return errKey;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
let returnMsg;
|
|
234
|
-
if (typeof errKey === 'string') {
|
|
235
|
-
for (const key in ErrMsgMap) {
|
|
236
|
-
if (errKey.toString() === key || errKey.includes(key)) {
|
|
237
|
-
returnMsg = ErrMsgMap[key];
|
|
238
|
-
if (option) {
|
|
239
|
-
returnMsg = returnMsg + " <" + option+ ">";
|
|
240
|
-
}
|
|
241
|
-
if (value) {
|
|
242
|
-
returnMsg = returnMsg + " : " + value;
|
|
243
|
-
}
|
|
244
|
-
break;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return returnMsg;
|
|
249
|
-
};
|
|
250
|
-
|
|
251
|
-
function CLIError(heading, message) {
|
|
252
|
-
if (heading) {
|
|
253
|
-
this.heading = "[" + heading + " failure"+ "]:";
|
|
254
|
-
}
|
|
255
|
-
this.message = message;
|
|
256
|
-
this.stack = Error().stack;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
CLIError.prototype = Object.create(Error.prototype);
|
|
260
|
-
CLIError.prototype.heading = "[Tips]:";
|
|
261
|
-
|
|
262
|
-
if (typeof module !== 'undefined' && module.exports) {
|
|
263
|
-
module.exports = errMsgHdlr;
|
|
264
|
-
}
|
|
265
|
-
}());
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2020-2024 LG Electronics Inc.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const log = require('npmlog'),
|
|
8
|
+
spinner = require('../util/spinner');
|
|
9
|
+
|
|
10
|
+
(function() {
|
|
11
|
+
const errMsgHdlr = {},
|
|
12
|
+
ErrMsgMap = {
|
|
13
|
+
// service's error message, common
|
|
14
|
+
"for category \"/dev\"": "Please enable \"Developer options\" on your device",
|
|
15
|
+
|
|
16
|
+
// sessionmanager
|
|
17
|
+
"SELECT_PROFILE": "Please select the profile on the display",
|
|
18
|
+
|
|
19
|
+
// appinstalld
|
|
20
|
+
"failed to extract ipk file": "Please check whether the ipk file is packaged by CLI or not",
|
|
21
|
+
"Failed to parse control": "Please check whether the ipk file is packaged by CLI or not",
|
|
22
|
+
"Failed to extract package": "Please check whether the ipk file is packaged by CLI or not",
|
|
23
|
+
"duplicate command": "Please wait and retry the command",
|
|
24
|
+
"update manifest file failed": "Please wait and retry the command",
|
|
25
|
+
"Cannnot install privileged app on developer mode": "Please change the app id (app id should not start with 'com.lge', 'com.webos', 'com.palm')",
|
|
26
|
+
"Cannnot remove privileged app on developer mode": "You cannot remove the privileged app whose app id start with 'com.lge', 'com.webos', 'com.palm'",
|
|
27
|
+
"unable to execute smack": "Please remove the app and install again",
|
|
28
|
+
"empty session list, cannot query getAppInfo": "Please select the profile on the display",
|
|
29
|
+
"FAILED_REMOVE": "Please check app is installed to device by ares-install -l",
|
|
30
|
+
|
|
31
|
+
// applicationmanager
|
|
32
|
+
"Cannot find proper launchPoint": "The app is not installed app. Please check the list by ares-install -l",
|
|
33
|
+
"is not running": "Please check the list of running apps using ares-launch -r",
|
|
34
|
+
"was not found OR Unsupported Application Type": "The app is not installed. Please check the list of installed apps using ares-install -l",
|
|
35
|
+
"invalid parameters": "Invalid parameters are passed. Please check the parameters",
|
|
36
|
+
"app is locked": "The app is now installing/updating/deleting. Please try again later",
|
|
37
|
+
|
|
38
|
+
// com.webos.service.sessionmanager
|
|
39
|
+
"Service does not exist: com.webos.service.sessionmanager": "This device does not support multiple sessions",
|
|
40
|
+
|
|
41
|
+
// com.webos.surfacemanager
|
|
42
|
+
"ERR_INVALID_DISPLAY": "Please use a valid value for display id",
|
|
43
|
+
|
|
44
|
+
"EACCES": "No permission to execute. Please check the directory permission",
|
|
45
|
+
"EADDRINUSE": "An attempt to bind a server to a local address failed. Please check the IP address or the port number",
|
|
46
|
+
"ECONNREFUSED": "Connection refused. Please check the device IP address or the port number",
|
|
47
|
+
"ECONNRESET": "Unable to connect to the device. Please check the device",
|
|
48
|
+
"ENOENT": "Please check if the path is valid",
|
|
49
|
+
"ENOTDIR": "Please check if the path is valid",
|
|
50
|
+
"EROFS": "Please check if the path is valid",
|
|
51
|
+
"TIME_OUT": "Connection timed out. Please check the device IP address or the port number",
|
|
52
|
+
"NO_FREE_SPACE": "Installation failure. Please check if there is sufficient free space in the disk",
|
|
53
|
+
|
|
54
|
+
// can be external lib error
|
|
55
|
+
"Authentication failure": "ssh authentication failure. Please check the ssh connection info such as password, private key and username again",
|
|
56
|
+
"connect Unknown system": "Please check the device IP address or the port number",
|
|
57
|
+
"Unable to parse private key": "Wrong passphrase for ssh key. Please check passphrase again",
|
|
58
|
+
"Unable to request a pseudo-terminal": "Unable to open terminal (Target does not allow to open pty)",
|
|
59
|
+
|
|
60
|
+
// invalid appinfo, service
|
|
61
|
+
"REQUIRED_FIELD": "Please input required field",
|
|
62
|
+
"INVALID_ID_RULE": "The app/pkg ID should consist of lowercase letters (a-z), numbers (0-9), plus (+) and minus (-) signs and periods (.)",
|
|
63
|
+
"INVALID_VERSION_RULE": "The app/pkg version number should consist of three non-negative integers, separated by dots.\nEach number cannot exceed 9 digits and cannot contain leading zeroes",
|
|
64
|
+
"NOT_EXCLUDE_APPINFO": "You cannot exclude the appinfo.json file",
|
|
65
|
+
"NOT_RELATIVE_PATH_APPINFO": "The pathname must be relative to the directory where the appinfo.json file is located",
|
|
66
|
+
"NO_METAFILE": "No meta file (ex. appinfo.json, services.json) exists in the project directory",
|
|
67
|
+
"NO_COMPONENT_FILE": "There is no component file for webOS package. File:",
|
|
68
|
+
"NO_ACCOUNT": "Account directory is not supported. Please delete the 'account-templates.json' file.",
|
|
69
|
+
"OVER_APPCOUNT": "You can package only one application at once",
|
|
70
|
+
"INVALID_APPID": "App ID must start with package ID",
|
|
71
|
+
"INVALID_SERVICEID": "ServiceID must start with package id",
|
|
72
|
+
"INVALID_RESOURCEID": "Resource ID must start with package ID",
|
|
73
|
+
"FAILED_MINIFY": "Failed to minify code. Please check the source code",
|
|
74
|
+
|
|
75
|
+
// invalid value
|
|
76
|
+
"INVALID_JSON_FORMAT": "Invalid JSON format",
|
|
77
|
+
"INVALID_ARGV": "Please check arguments",
|
|
78
|
+
"INVALID_INTERVAL": "Please use nonnegative integer value for the \"time-interval\" option",
|
|
79
|
+
"INVALID_DISPLAY": "Please use nonnegative integer value for the \"display\" option",
|
|
80
|
+
"INVALID_TEMPLATE": "Invalid template name",
|
|
81
|
+
"INVALID_FILE": "Invalid file",
|
|
82
|
+
"INVALID_VALUE": "Invalid value",
|
|
83
|
+
"INVALID_DEVICENAME": "Invalid device name. The device name should not start with '%' or '$'",
|
|
84
|
+
"INVALID_OBJECT": "Object format error",
|
|
85
|
+
"INVALID_MODE": "Please specify an option, either '--add' or '--modify'",
|
|
86
|
+
"INVALID_REMOVE_MODE": "Please set remove option",
|
|
87
|
+
"INVALID_CAPTURE_FORMAT": "Please specify the file extension(.png, .bmp or .jpg)",
|
|
88
|
+
"INVALID_CSV_FORMAT": "Please change the file extension to .csv",
|
|
89
|
+
"INVALID_IP": "Plese check IP address format",
|
|
90
|
+
"INVALID_COMMAND": "This command is invalid. Please check the supported commands using ares -l",
|
|
91
|
+
"INVALID_COMBINATION": "This options cannot be used with display option",
|
|
92
|
+
|
|
93
|
+
// set value & type error
|
|
94
|
+
"EMPTY_PROFILE": "Profile is empty",
|
|
95
|
+
"EMPTY_VALUE": "Please specify a value",
|
|
96
|
+
"EXISTING_VALUE": "The specified value already exists",
|
|
97
|
+
"EXISTING_FILETYPE_PATH": "A file with the same name at the specified location already exists",
|
|
98
|
+
"SUPPORT_ONLY_IPK": "Only .ipk file is supported. Please check the file extension",
|
|
99
|
+
"NOT_MATCHED_LOGDAEMON": "Logging daemon of CLI should be matched with that of the target device\nPlease change the logging daemon of CLI to same as that of the target device",
|
|
100
|
+
"NOT_MATCHED_LOG": "There are no logs from the ID\nPlease check if the combination of options or the ID are valid",
|
|
101
|
+
"NOT_DIRTYPE_PATH": "The specified path is not a directory",
|
|
102
|
+
"NOT_EXIST_INSPECTOR": "Inspector is not running. Please call stop() after inspect the app",
|
|
103
|
+
"NOT_EXIST_PATH": "The specified path does not exist",
|
|
104
|
+
"NOT_EXIST_LOGDAEMON": "The specified daemon does not exist",
|
|
105
|
+
"NOT_EXIST_LOGFILE": "A log file does not exist in the target device",
|
|
106
|
+
"NOT_EXIST_SERVER": "Server is not running. Please call stop() after running the server",
|
|
107
|
+
"NOT_EXIST_SSHKEY_PASSWD": "Private key file or password does not exist",
|
|
108
|
+
"NOT_EXIST_DISPLAY": "No existing displayId from getSessionList",
|
|
109
|
+
"NOT_EXIST_SIMULATOR": "No existing simulator excutable file which name starting with",
|
|
110
|
+
"NOT_SUPPORT_COMMOND_DEPRECATED": "This command is deprecated. Please use \"ares-device -i\" instead of \"ares-device-info\"",
|
|
111
|
+
"NOT_SUPPORT_COMMOND": "This command is not supported by current profile\nIf you want to use this command, please change profile using \"ares-config\" command\nCurrent profile:",
|
|
112
|
+
"NOT_SUPPORT_OPTION": "This option is not supported by current profile\nIf you want to use this command, please change profile using \"ares-config\" command\nCurrent profile:",
|
|
113
|
+
"NOT_SUPPORT_SESSION": "This device does not support multiple sessions",
|
|
114
|
+
"NOT_SUPPORT_ENYO": "Enyo app packaging is not supported",
|
|
115
|
+
"NOT_SUPPORT_AUTHTYPE": "Not supported auth type",
|
|
116
|
+
"NOT_SUPPORT_RUNNINGLIST": "Not supported method to get running app information",
|
|
117
|
+
"NOT_SUPPORT_JOURNALD": "journald does not support the option",
|
|
118
|
+
"NOT_SUPPORT_PMLOGD": "pmlogd does not support the option",
|
|
119
|
+
"NOT_SUPPORT_XZ": "xz file is not supported. Only .ipk file packaged with the CLI is supported",
|
|
120
|
+
"NOT_USE_WITH_OPTIONS": "Do not use together with options",
|
|
121
|
+
"EMPTY_FILENAME": "Please input log file name from --file-list option",
|
|
122
|
+
"EMPTY_ID": "Please input an ID of an app or service",
|
|
123
|
+
|
|
124
|
+
"USE_WITH_OPTIONS": "Use together with options",
|
|
125
|
+
"USE_PKGID_PKGINFO": "packageId must be provided by using either the '--pkgid' or the '--pkginfofile' option",
|
|
126
|
+
"USE_GDB": "Please use GDB to debug a native serivce",
|
|
127
|
+
"NOT_IMPLEMENTED": "Not implemented",
|
|
128
|
+
"NOT_HANDLE_FILE": "Don't know how to handle",
|
|
129
|
+
"NOT_OVERWRITE_DIR": "Cannot overwrite the directory",
|
|
130
|
+
"NOT_PACKAGE_WITH_OPTION": "Cannot package the app directory with option",
|
|
131
|
+
"NOT_PACKAGE_WITH_PKGDIR": "Cannot package the directory with package directory",
|
|
132
|
+
"NOT_PACKAGE_WITH_RESOURCE": "Cannot package the app or service directory with resource directory",
|
|
133
|
+
"UNMATCHED_DEVICE": "No matched device",
|
|
134
|
+
"CANNOT_REMOVE_DEVICE": "Cannot remove the device",
|
|
135
|
+
"UNMATCHED_DISPLAY_AFFINITY": "Please use the same value for \"display\" and \"displayAffinity\"",
|
|
136
|
+
|
|
137
|
+
"FAILED_CALL_LUNA": "luna-send command failed",
|
|
138
|
+
"FAILED_GET_PORT": "Failed to get Debug port",
|
|
139
|
+
"FAILED_GET_SVCPATH": "Failed to get service installation path",
|
|
140
|
+
"FAILED_GET_SSHKEY": "Failed to get ssh private key",
|
|
141
|
+
"FAILED_TRANSMIT_FILE": "File transmission error. Please try again",
|
|
142
|
+
"FAILED_CREATE_DIR": "Cannot create directory in the destination path - permission denied",
|
|
143
|
+
"FAILED_REMOVE_PACKAGE": "No packages installed or removed",
|
|
144
|
+
"FAILED_FIND_SERVICE": "Failed to find a service with the specified name",
|
|
145
|
+
|
|
146
|
+
"CONNECTED_MULTI_DEVICE": "Multiple devices are connected by novacom. Please specify the target name",
|
|
147
|
+
"SET_DEFAULT_MULTI_DEVICE": "Multiple devices are set to default target. Please reset device list",
|
|
148
|
+
"NEED_ROOT_PERMISSION": "Unable to connect to the target device. root access required",
|
|
149
|
+
"MISSING_CALLBACK": "Missing completion callback",
|
|
150
|
+
"USING_WEBINSPECTOR": "Web Inspector is already connected with another browser. Please close the previous connection",
|
|
151
|
+
"UNKNOWN_OPERATOR": "Unknown operator",
|
|
152
|
+
"UNABLE_USE_SFTP": "Unable to use sftp",
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// Pure CLI Tip error : errKey(string), option, value
|
|
156
|
+
// Luna service error : errKey("FAILED_CALL_LUNA"- string), option, null, heading(service name)
|
|
157
|
+
// System call & ssh call error : errKey(object)
|
|
158
|
+
errMsgHdlr.getErrMsg = function(errKey, option, value, heading) {
|
|
159
|
+
log.silly("error-handler#getErrMsg()", "errKey:", errKey, ", option:", option, ", value:", value, ", heading:", heading);
|
|
160
|
+
// Return errKey when errKey is null
|
|
161
|
+
if (!errKey) {
|
|
162
|
+
return errKey;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const orgErrKey = errKey,
|
|
166
|
+
resultErr = [];
|
|
167
|
+
let mapErrMsg = "";
|
|
168
|
+
|
|
169
|
+
// Handle systemcall or ssh call err message. errKey is must be object
|
|
170
|
+
if (typeof orgErrKey === "object") {
|
|
171
|
+
// Change errkey and heading to create Tips meessage;
|
|
172
|
+
let sysHeading = "syscall",
|
|
173
|
+
sysErrKey = orgErrKey.code;
|
|
174
|
+
|
|
175
|
+
// Handle as "ssh execution error"
|
|
176
|
+
if (!orgErrKey.syscall) {
|
|
177
|
+
sysHeading = "ssh exec";
|
|
178
|
+
sysErrKey = orgErrKey.message.trim();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const sysCallErr = new CLIError(sysHeading, orgErrKey.message.trim());
|
|
182
|
+
if (sysCallErr.message) {
|
|
183
|
+
resultErr.push(sysCallErr);
|
|
184
|
+
}
|
|
185
|
+
// Set parametars to create Tips message
|
|
186
|
+
errKey = sysErrKey;
|
|
187
|
+
option = orgErrKey.path;
|
|
188
|
+
value = "";
|
|
189
|
+
heading = "";
|
|
190
|
+
|
|
191
|
+
} else if (orgErrKey === "FAILED_CALL_LUNA" && heading) {
|
|
192
|
+
mapErrMsg = errMsgHdlr.getErrStr(orgErrKey, option, value);
|
|
193
|
+
if (!mapErrMsg) {
|
|
194
|
+
return orgErrKey; // Do not change modify this line.
|
|
195
|
+
}
|
|
196
|
+
const lunaErr = new CLIError(heading, mapErrMsg);
|
|
197
|
+
if (lunaErr.message) {
|
|
198
|
+
resultErr.push(lunaErr);
|
|
199
|
+
}
|
|
200
|
+
// Set parametars to create Tips message
|
|
201
|
+
errKey = option;
|
|
202
|
+
option = "";
|
|
203
|
+
value = "";
|
|
204
|
+
heading = "";
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Create Tips message
|
|
208
|
+
mapErrMsg = errMsgHdlr.getErrStr(errKey, option, value);
|
|
209
|
+
|
|
210
|
+
if (mapErrMsg) {
|
|
211
|
+
const tipsErr = new CLIError(heading, mapErrMsg);
|
|
212
|
+
if (tipsErr.message) {
|
|
213
|
+
resultErr.push(tipsErr);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Defense code to stop the spinner before showing an error message.
|
|
218
|
+
spinner.stop();
|
|
219
|
+
if (resultErr.length > 0) {
|
|
220
|
+
return resultErr;
|
|
221
|
+
} else {
|
|
222
|
+
return orgErrKey;
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
errMsgHdlr.getErrStr = function(errKey, option, value) {
|
|
227
|
+
log.silly("error-handler#getErrStr()", "errKey:", errKey, ", option:", option, ", value:", value);
|
|
228
|
+
|
|
229
|
+
if (!errKey) {
|
|
230
|
+
return errKey;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
let returnMsg;
|
|
234
|
+
if (typeof errKey === 'string') {
|
|
235
|
+
for (const key in ErrMsgMap) {
|
|
236
|
+
if (errKey.toString() === key || errKey.includes(key)) {
|
|
237
|
+
returnMsg = ErrMsgMap[key];
|
|
238
|
+
if (option) {
|
|
239
|
+
returnMsg = returnMsg + " <" + option+ ">";
|
|
240
|
+
}
|
|
241
|
+
if (value) {
|
|
242
|
+
returnMsg = returnMsg + " : " + value;
|
|
243
|
+
}
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return returnMsg;
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
function CLIError(heading, message) {
|
|
252
|
+
if (heading) {
|
|
253
|
+
this.heading = "[" + heading + " failure"+ "]:";
|
|
254
|
+
}
|
|
255
|
+
this.message = message;
|
|
256
|
+
this.stack = Error().stack;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
CLIError.prototype = Object.create(Error.prototype);
|
|
260
|
+
CLIError.prototype.heading = "[Tips]:";
|
|
261
|
+
|
|
262
|
+
if (typeof module !== 'undefined' && module.exports) {
|
|
263
|
+
module.exports = errMsgHdlr;
|
|
264
|
+
}
|
|
265
|
+
}());
|