aiot-toolkit 2.0.2 → 2.0.3-beta.10
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/README.md +2 -1
- package/lib/bin.js +158 -184
- package/lib/builder/AndroidUxBuilder.js +14 -15
- package/lib/builder/IBuilder.d.ts +6 -0
- package/lib/builder/IBuilder.js +1 -2
- package/lib/builder/UxBuilderBase.d.ts +13 -13
- package/lib/builder/UxBuilderBase.js +130 -96
- package/lib/builder/VelaUxBuilder.d.ts +13 -6
- package/lib/builder/VelaUxBuilder.js +65 -61
- package/lib/builder/XtsBuilder.d.ts +2 -0
- package/lib/builder/XtsBuilder.js +85 -78
- package/lib/index.d.ts +6 -0
- package/lib/index.js +49 -0
- package/lib/interface/CommandInterface.js +4 -1
- package/lib/interface/VelaEmulatorInterface.js +4 -1
- package/lib/starter/AndroidUxStart.js +158 -158
- package/lib/starter/IStarter.js +39 -37
- package/lib/starter/VelaUxStarter.d.ts +8 -3
- package/lib/starter/VelaUxStarter.js +158 -189
- package/lib/starter/XtsStarter.js +16 -17
- package/lib/starter/androidRouter/LinkMode.js +12 -8
- package/lib/starter/androidRouter/PackageRouter.js +144 -140
- package/lib/utils/AdbUtils.js +48 -76
- package/lib/utils/DeviceUtil.js +277 -293
- package/lib/utils/RequestUtils.js +54 -68
- package/lib/utils/VelaAvdUtils.d.ts +9 -54
- package/lib/utils/VelaAvdUtils.js +127 -436
- package/lib/waiter.js +35 -35
- package/package.json +10 -15
package/README.md
CHANGED
|
@@ -32,7 +32,6 @@ aiot-toolkit2.0目前支持的打包格式如下:
|
|
|
32
32
|
| 命令 | 说明 |
|
|
33
33
|
| ------------------------ | ------------------------ |
|
|
34
34
|
| npm create aiot | 创建并手动选择项目 |
|
|
35
|
-
| npm create aiot xts | 创建xts项目 |
|
|
36
35
|
| npm create aiot ux | 创建ux项目 |
|
|
37
36
|
| aiot build | 构建项目 |
|
|
38
37
|
| aiot release | 构建项目-release模式 |
|
|
@@ -42,3 +41,5 @@ aiot-toolkit2.0目前支持的打包格式如下:
|
|
|
42
41
|
| aiot installDbgAndMkp | 在真机上安装快应用调试器 |
|
|
43
42
|
| aiot createVelaAvd | 创建 vela 模拟器 |
|
|
44
43
|
| aiot deleteVelaAvd | 删除 vela 模拟器 |
|
|
44
|
+
|
|
45
|
+
## 函数调用
|
package/lib/bin.js
CHANGED
|
@@ -1,202 +1,176 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const semver_1 = __importDefault(require("semver"));
|
|
3
|
+
|
|
4
|
+
var _sharedUtils = require("@aiot-toolkit/shared-utils");
|
|
5
|
+
var _semver = _interopRequireDefault(require("semver"));
|
|
6
|
+
var _aiotpack = require("@aiot-toolkit/aiotpack");
|
|
7
|
+
var _commander = require("@aiot-toolkit/commander");
|
|
8
|
+
var _AndroidUxBuilder = _interopRequireDefault(require("./builder/AndroidUxBuilder"));
|
|
9
|
+
var _VelaUxBuilder = _interopRequireDefault(require("./builder/VelaUxBuilder"));
|
|
10
|
+
var _XtsBuilder = _interopRequireDefault(require("./builder/XtsBuilder"));
|
|
11
|
+
var _AndroidUxStart = _interopRequireDefault(require("./starter/AndroidUxStart"));
|
|
12
|
+
var _VelaUxStarter = _interopRequireDefault(require("./starter/VelaUxStarter"));
|
|
13
|
+
var _XtsStarter = _interopRequireDefault(require("./starter/XtsStarter"));
|
|
14
|
+
var _DeviceUtil = _interopRequireDefault(require("./utils/DeviceUtil"));
|
|
15
|
+
var _VelaAvdUtils = _interopRequireDefault(require("./utils/VelaAvdUtils"));
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
17
|
// 支持的最低node版本
|
|
19
18
|
const NODE_MINIMUM_VERSION = '18.0.0';
|
|
20
19
|
checkVersion();
|
|
21
|
-
const aiotpack_1 = require("@aiot-toolkit/aiotpack");
|
|
22
|
-
const commander_1 = require("@aiot-toolkit/commander");
|
|
23
|
-
const shared_utils_2 = require("@aiot-toolkit/shared-utils");
|
|
24
|
-
const AndroidUxBuilder_1 = __importDefault(require("./builder/AndroidUxBuilder"));
|
|
25
|
-
const VelaUxBuilder_1 = __importDefault(require("./builder/VelaUxBuilder"));
|
|
26
|
-
const XtsBuilder_1 = __importDefault(require("./builder/XtsBuilder"));
|
|
27
|
-
const AndroidUxStart_1 = __importDefault(require("./starter/AndroidUxStart"));
|
|
28
|
-
const VelaUxStarter_1 = __importDefault(require("./starter/VelaUxStarter"));
|
|
29
|
-
const XtsStarter_1 = __importDefault(require("./starter/XtsStarter"));
|
|
30
|
-
const DeviceUtil_1 = __importDefault(require("./utils/DeviceUtil"));
|
|
31
|
-
const VelaAvdUtils_1 = __importDefault(require("./utils/VelaAvdUtils"));
|
|
32
20
|
// 校验当前环境中的node
|
|
33
21
|
function checkVersion() {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
22
|
+
const currentVersion = process.versions.node;
|
|
23
|
+
if (_semver.default.lt(currentVersion, NODE_MINIMUM_VERSION)) {
|
|
24
|
+
_sharedUtils.ColorConsole.throw('It is detected that the current NodeJS version ', {
|
|
25
|
+
word: currentVersion
|
|
26
|
+
}, ' is too low, please upgrade to NodeJS version higher than ', {
|
|
27
|
+
word: NODE_MINIMUM_VERSION
|
|
28
|
+
});
|
|
29
|
+
process.exit();
|
|
30
|
+
}
|
|
39
31
|
}
|
|
32
|
+
|
|
40
33
|
// 配置支持的 builder 类型,新增的项目类型,需在此处加上类型
|
|
41
34
|
const projectMapper = {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
35
|
+
[_sharedUtils.ProjectType.VELA_UX]: {
|
|
36
|
+
builder: _VelaUxBuilder.default,
|
|
37
|
+
starter: _VelaUxStarter.default
|
|
38
|
+
},
|
|
39
|
+
[_sharedUtils.ProjectType.VELA_XTS]: {
|
|
40
|
+
builder: _XtsBuilder.default,
|
|
41
|
+
starter: _XtsStarter.default
|
|
42
|
+
},
|
|
43
|
+
[_sharedUtils.ProjectType.ANDDROID_UX]: {
|
|
44
|
+
builder: _AndroidUxBuilder.default,
|
|
45
|
+
starter: _AndroidUxStart.default
|
|
46
|
+
}
|
|
54
47
|
};
|
|
55
48
|
function findBuilder() {
|
|
56
|
-
|
|
57
|
-
|
|
49
|
+
const projectType = _sharedUtils.ProjectType.getProjectType(process.cwd());
|
|
50
|
+
return new projectMapper[projectType].builder();
|
|
58
51
|
}
|
|
59
52
|
function build(command, description) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
};
|
|
53
|
+
const builder = findBuilder();
|
|
54
|
+
const paramList = builder?.params;
|
|
55
|
+
return {
|
|
56
|
+
name: command,
|
|
57
|
+
description,
|
|
58
|
+
paramList,
|
|
59
|
+
action: async option => {
|
|
60
|
+
try {
|
|
61
|
+
// 获取对应的 build;如果存在,执行 build 函数,不存在,提示
|
|
62
|
+
option.mode = command === 'release' ? _aiotpack.CompileMode.PRODUCTION : _aiotpack.CompileMode.DEVELOPMENT;
|
|
63
|
+
const projectPath = process.cwd();
|
|
64
|
+
await builder.build(projectPath, option);
|
|
65
|
+
} catch (error) {
|
|
66
|
+
_sharedUtils.ColorConsole.error('Build Error:', {
|
|
67
|
+
word: error?.toString() || 'unknown error'
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
80
72
|
}
|
|
81
73
|
function findStarter(command, description) {
|
|
82
|
-
|
|
83
|
-
|
|
74
|
+
const projectType = _sharedUtils.ProjectType.getProjectType(process.cwd());
|
|
75
|
+
return new projectMapper[projectType].starter(command, description);
|
|
84
76
|
}
|
|
85
|
-
function main() {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
action: (option) => __awaiter(this, void 0, void 0, function* () {
|
|
184
|
-
const { avdNames } = option;
|
|
185
|
-
avdNames.forEach((avdName) => {
|
|
186
|
-
VelaAvdUtils_1.default.velaAvdCls.deleteVelaAvd(avdName);
|
|
187
|
-
});
|
|
188
|
-
})
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
name: 'initEmulatorEnv',
|
|
192
|
-
description: 'init/reset emulator environment',
|
|
193
|
-
action: () => __awaiter(this, void 0, void 0, function* () {
|
|
194
|
-
VelaAvdUtils_1.default.initEmulatorEnv();
|
|
195
|
-
})
|
|
196
|
-
}
|
|
197
|
-
]
|
|
198
|
-
};
|
|
199
|
-
commander_1.Command.registeProgram(config);
|
|
200
|
-
});
|
|
77
|
+
async function main() {
|
|
78
|
+
const config = {
|
|
79
|
+
name: 'aiot-toolkit',
|
|
80
|
+
description: 'contains build, dev, release, etc. commands for aiot toolkit',
|
|
81
|
+
version: require('../package.json').version,
|
|
82
|
+
commandList: [build('build', 'build project'), build('release', 'release the project'), findStarter('start', 'start project').getCommond(), {
|
|
83
|
+
name: 'getConnectedDevices',
|
|
84
|
+
description: 'get all connected devices',
|
|
85
|
+
action: async () => {
|
|
86
|
+
try {
|
|
87
|
+
const connectedDevices = await _DeviceUtil.default.getAllConnectedDevices();
|
|
88
|
+
_sharedUtils.ColorConsole.info(`The connected devices are: ${connectedDevices ? connectedDevices.join(', ') : 'null'}`);
|
|
89
|
+
} catch (error) {
|
|
90
|
+
_sharedUtils.ColorConsole.throw(`Error: getConnectedDevices failed`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}, {
|
|
94
|
+
name: 'getPlatforms',
|
|
95
|
+
description: 'get available platform(s) on selected device',
|
|
96
|
+
paramList: [{
|
|
97
|
+
name: 'ip',
|
|
98
|
+
description: 'device ip(eg 127.0.0.1)',
|
|
99
|
+
type: 'string',
|
|
100
|
+
enableInquirer: true
|
|
101
|
+
}, {
|
|
102
|
+
name: 'port',
|
|
103
|
+
description: 'device port(eg 39517)',
|
|
104
|
+
type: 'string',
|
|
105
|
+
enableInquirer: true
|
|
106
|
+
}, {
|
|
107
|
+
name: 'sn',
|
|
108
|
+
description: 'view the serial number of the connected device through the "adb devices" command, if it is a device connected via wifi, the format is "ip address:5555"',
|
|
109
|
+
type: 'string',
|
|
110
|
+
enableInquirer: true
|
|
111
|
+
}],
|
|
112
|
+
action: async option => {
|
|
113
|
+
await _DeviceUtil.default.getAvailablePlatform(option);
|
|
114
|
+
}
|
|
115
|
+
}, {
|
|
116
|
+
name: 'installDbgAndMkp',
|
|
117
|
+
description: 'install "org.hapjs.debugger" & "org.hapjs.mockup" ',
|
|
118
|
+
paramList: [{
|
|
119
|
+
name: 'ip',
|
|
120
|
+
description: 'device ip(eg 127.0.0.1)',
|
|
121
|
+
type: 'string'
|
|
122
|
+
}, {
|
|
123
|
+
name: 'port',
|
|
124
|
+
description: 'device ip(eg 5555)',
|
|
125
|
+
type: 'string'
|
|
126
|
+
}],
|
|
127
|
+
action: async option => {
|
|
128
|
+
try {
|
|
129
|
+
const successMessage = await _DeviceUtil.default.installDbgAndMkp(option);
|
|
130
|
+
_sharedUtils.ColorConsole.success(`${successMessage}`);
|
|
131
|
+
} catch (error) {
|
|
132
|
+
_sharedUtils.ColorConsole.throw(`installDbgAndMkp failed, errorMessage:'}`, {
|
|
133
|
+
word: error?.toString() || 'unknown error'
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}, {
|
|
138
|
+
name: 'createVVD',
|
|
139
|
+
description: 'create a vela virtual device',
|
|
140
|
+
action: async () => {
|
|
141
|
+
_VelaAvdUtils.default.createVelaVvdByInquire();
|
|
142
|
+
}
|
|
143
|
+
}, {
|
|
144
|
+
name: 'deleteVVD',
|
|
145
|
+
description: 'delete vela virtual device(s)',
|
|
146
|
+
paramList: [{
|
|
147
|
+
name: 'avdNames',
|
|
148
|
+
description: 'avd names to delete',
|
|
149
|
+
enableInquirer: true,
|
|
150
|
+
type: 'checkbox',
|
|
151
|
+
choices: _VelaAvdUtils.default.vvdManager.getVvdList().map(item => {
|
|
152
|
+
return {
|
|
153
|
+
name: item.name,
|
|
154
|
+
value: item.name
|
|
155
|
+
};
|
|
156
|
+
})
|
|
157
|
+
}],
|
|
158
|
+
action: async option => {
|
|
159
|
+
const {
|
|
160
|
+
avdNames
|
|
161
|
+
} = option;
|
|
162
|
+
avdNames.forEach(avdName => {
|
|
163
|
+
_VelaAvdUtils.default.vvdManager.deleteVvd(avdName);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}, {
|
|
167
|
+
name: 'initEmulatorEnv',
|
|
168
|
+
description: 'init/reset emulator environment',
|
|
169
|
+
action: async () => {
|
|
170
|
+
_VelaAvdUtils.default.initEmulatorEnv();
|
|
171
|
+
}
|
|
172
|
+
}]
|
|
173
|
+
};
|
|
174
|
+
_commander.Command.registeProgram(config);
|
|
201
175
|
}
|
|
202
|
-
main();
|
|
176
|
+
main();
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _sharedUtils = require("@aiot-toolkit/shared-utils");
|
|
8
|
+
var _UxBuilderBase = _interopRequireDefault(require("./UxBuilderBase"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
10
|
/**
|
|
9
11
|
* AndroidUxBuilder
|
|
10
12
|
*/
|
|
11
|
-
class AndroidUxBuilder extends
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
match(projectPath) {
|
|
17
|
-
return shared_utils_1.ProjectType.getProjectType(projectPath) === shared_utils_1.ProjectType.ANDDROID_UX;
|
|
18
|
-
}
|
|
13
|
+
class AndroidUxBuilder extends _UxBuilderBase.default {
|
|
14
|
+
params = [];
|
|
15
|
+
match(projectPath) {
|
|
16
|
+
return _sharedUtils.ProjectType.getProjectType(projectPath) === _sharedUtils.ProjectType.ANDDROID_UX;
|
|
17
|
+
}
|
|
19
18
|
}
|
|
20
|
-
exports.default = AndroidUxBuilder;
|
|
19
|
+
var _default = exports.default = AndroidUxBuilder;
|
package/lib/builder/IBuilder.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
import { IJavascriptCompileOption } from '@aiot-toolkit/aiotpack';
|
|
2
|
-
import {
|
|
1
|
+
import { CompileMode, IJavascriptCompileOption } from '@aiot-toolkit/aiotpack';
|
|
2
|
+
import IFileLaneEvents, { IFileLaneSuccessData } from 'file-lane/lib/interface/IFileLaneEvents';
|
|
3
|
+
export interface IUxBuildOption {
|
|
4
|
+
watch?: boolean;
|
|
5
|
+
mode: CompileMode;
|
|
6
|
+
}
|
|
3
7
|
/**
|
|
4
8
|
* UxBuilderBase
|
|
5
9
|
*/
|
|
6
|
-
declare class UxBuilderBase<O extends
|
|
7
|
-
events:
|
|
8
|
-
onBuildSuccess?: (data: {
|
|
9
|
-
costTime: number;
|
|
10
|
-
}) => void;
|
|
11
|
-
};
|
|
10
|
+
declare class UxBuilderBase<O extends IUxBuildOption = IUxBuildOption> {
|
|
11
|
+
events: IFileLaneEvents;
|
|
12
12
|
/**
|
|
13
13
|
* 配置文件
|
|
14
14
|
*/
|
|
15
15
|
readonly QUICKAPP_CONFIG = "quickapp.config.js";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
costTime: number;
|
|
19
|
-
}) => void;
|
|
20
|
-
});
|
|
16
|
+
private fileLane?;
|
|
17
|
+
constructor(events?: IFileLaneEvents);
|
|
21
18
|
/**
|
|
22
19
|
* ux项目的build函数
|
|
23
20
|
* @param projectPath 项目路径
|
|
@@ -25,6 +22,8 @@ declare class UxBuilderBase<O extends Dictionary = any> {
|
|
|
25
22
|
* @param watch 是否开启监听
|
|
26
23
|
*/
|
|
27
24
|
build(projectPath: string, options: O): Promise<void>;
|
|
25
|
+
private handleLogs;
|
|
26
|
+
dispose(): Promise<void>;
|
|
28
27
|
/**
|
|
29
28
|
* 获取build的编译配置
|
|
30
29
|
* @param projectPath 项目路径
|
|
@@ -34,3 +33,4 @@ declare class UxBuilderBase<O extends Dictionary = any> {
|
|
|
34
33
|
private readQuickAppConfig;
|
|
35
34
|
}
|
|
36
35
|
export default UxBuilderBase;
|
|
36
|
+
export { IFileLaneEvents, IFileLaneSuccessData };
|