@zeppos/zeus-cli 1.0.6 → 1.0.16
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/bin/cli.js +4 -1
- package/config/device.js +10 -2
- package/config/project.js +23 -1
- package/modules/build.js +52 -26
- package/modules/config.js +55 -11
- package/modules/create/index.js +57 -18
- package/modules/create/local-app.js +28 -4
- package/modules/help.js +1 -0
- package/modules/login.js +62 -18
- package/modules/run.js +43 -29
- package/modules/simulator.js +4 -3
- package/package.json +3 -2
- package/public/template/empty/app-side/index.js +1 -1
- package/public/template/empty/app.js +1 -1
- package/public/template/empty/app.json +1 -8
- package/public/template/empty/pages/index.js +2 -2
- package/public/template/empty/setting/index.js +1 -1
- package/public/template/empty/watchface/index.js +13 -0
- package/public/template/hello-world/app.js +1 -1
- package/public/template/hello-world/page/i18n/en-US.po +3 -0
- package/public/template/timer/app.js +10 -0
- package/public/template/timer/app.json +50 -0
- package/public/template/timer/assets/gtr-3-pro/images/bg/bg.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/0.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/1.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/2.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/3.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/4.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/5.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/6.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/7.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/8.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/9.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/bigNum/sp.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/btn/back.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/btn/lv.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/btn/red.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/point/bg.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/point/bottom.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/point/center.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/point/h.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/point/left.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/point/m.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/point/right.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/point/s.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/preview.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/second/second.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/0.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/1.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/2.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/3.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/4.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/5.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/6.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/7.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/8.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/9.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/d.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/smallNum/n.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_ch/1.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_ch/2.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_ch/3.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_ch/4.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_ch/5.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_ch/6.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_ch/7.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_en/1.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_en/2.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_en/3.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_en/4.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_en/5.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_en/6.png +0 -0
- package/public/template/timer/assets/gtr-3-pro/images/week_en/7.png +0 -0
- package/public/template/timer/shared/buffer.js +11 -0
- package/public/template/timer/shared/device-polyfill.js +3 -0
- package/public/template/timer/shared/global.js +17 -0
- package/public/template/timer/shared/js-module.js +27 -0
- package/public/template/timer/shared/logger.js +21 -0
- package/public/template/timer/shared/setTimeout.js +59 -0
- package/public/template/timer/watchface/gtr-3-pro/index.js +1 -0
- package/public/template/timer/watchface/round/index.js +438 -0
- package/public/template/hello-world/i18n/en-US.po +0 -2
package/bin/cli.js
CHANGED
|
@@ -19,10 +19,13 @@ yargs_1["default"].usage('Usage: $0 <command> [args?]')
|
|
|
19
19
|
.alias('v', 'version')
|
|
20
20
|
.command('init', 'init a new project in current directory', proxy, index_1.create)
|
|
21
21
|
.command('create', 'add a new project to current directory', proxy, index_1.create)
|
|
22
|
+
// @ts-ignore
|
|
22
23
|
.command('login', 'login to your account', proxy, index_1.login)
|
|
24
|
+
.command('logout', 'Sign out of your account', proxy, index_1.logout)
|
|
23
25
|
.command('dev', 'run this project in development mode', proxy, index_1.run)
|
|
24
26
|
.command('preview', 'preview this project in your device', proxy, index_1.buildPreview)
|
|
25
|
-
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
.command('build', 'build this project for production', proxy, index_1.buildProd)
|
|
26
29
|
.command('config', 'set or get the config value', proxy, index_1.config)
|
|
27
30
|
.fail(index_1.help)
|
|
28
31
|
.argv;
|
package/config/device.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
2
|
+
var _a, _b;
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.deviceTargets = exports.DeviceScreenType = exports.DeviceSource = exports.DevicePlatformName = exports.DeviceTarget = void 0;
|
|
4
|
+
exports.deviceInternalCodename = exports.deviceTargets = exports.DeviceScreenType = exports.DeviceSource = exports.DevicePlatformName = exports.DeviceTarget = void 0;
|
|
5
5
|
var DeviceTarget;
|
|
6
6
|
(function (DeviceTarget) {
|
|
7
7
|
DeviceTarget["MADRID"] = "madrid";
|
|
@@ -87,3 +87,11 @@ exports.deviceTargets = (_a = {},
|
|
|
87
87
|
}
|
|
88
88
|
},
|
|
89
89
|
_a);
|
|
90
|
+
exports.deviceInternalCodename = (_b = {},
|
|
91
|
+
_b[DeviceSource.MADRID] = DeviceTarget.MADRID,
|
|
92
|
+
_b[DeviceSource.MADRIDW] = DeviceTarget.MADRID,
|
|
93
|
+
_b[DeviceSource.VERONA] = DeviceTarget.VERONA,
|
|
94
|
+
_b[DeviceSource.VERONAW] = DeviceTarget.VERONA,
|
|
95
|
+
_b[DeviceSource.ZURICH] = DeviceTarget.ZURICH,
|
|
96
|
+
_b[DeviceSource.ZURICHW] = DeviceTarget.ZURICH,
|
|
97
|
+
_b);
|
package/config/project.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
exports.__esModule = true;
|
|
3
|
-
exports.TemplateCopyType = exports.AppSourceType = exports.AppType = void 0;
|
|
6
|
+
exports.loginStorageKey = exports.loginConfig = exports.LocalServerConfig = exports.TemplateCopyType = exports.AppSourceType = exports.AppType = void 0;
|
|
7
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
4
8
|
var AppType;
|
|
5
9
|
(function (AppType) {
|
|
6
10
|
AppType["APP"] = "app";
|
|
@@ -16,3 +20,21 @@ var TemplateCopyType;
|
|
|
16
20
|
TemplateCopyType["CLONE"] = "clone";
|
|
17
21
|
TemplateCopyType["EDIT"] = "edit";
|
|
18
22
|
})(TemplateCopyType = exports.TemplateCopyType || (exports.TemplateCopyType = {}));
|
|
23
|
+
var LocalServerConfig;
|
|
24
|
+
(function (LocalServerConfig) {
|
|
25
|
+
LocalServerConfig["HOSTNAME"] = "localhost";
|
|
26
|
+
LocalServerConfig[LocalServerConfig["PORT"] = 8086] = "PORT";
|
|
27
|
+
})(LocalServerConfig = exports.LocalServerConfig || (exports.LocalServerConfig = {}));
|
|
28
|
+
var loginURL = 'https://user.huami.com/universalLogin/index.html#/login';
|
|
29
|
+
var loginUrl = new URL(loginURL);
|
|
30
|
+
var accountPrefix = "____" + lodash_1["default"].replace(loginUrl.host, /\./g, '_') + "__";
|
|
31
|
+
exports.loginConfig = {
|
|
32
|
+
LOGIN_URL: loginURL,
|
|
33
|
+
PROJECT_NAME: 'zeppos_zeus_cli',
|
|
34
|
+
PLATFORM_APP: 'com.huami.watch.hmwatchmanager',
|
|
35
|
+
PROJECT_REDIRECT_URI: encodeURIComponent("http://" + LocalServerConfig.HOSTNAME + ":" + LocalServerConfig.PORT + "/")
|
|
36
|
+
};
|
|
37
|
+
exports.loginStorageKey = {
|
|
38
|
+
accountToken: accountPrefix + "token",
|
|
39
|
+
account: accountPrefix + "account"
|
|
40
|
+
};
|
package/modules/build.js
CHANGED
|
@@ -69,23 +69,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
69
69
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
70
70
|
};
|
|
71
71
|
exports.__esModule = true;
|
|
72
|
-
exports.buildPreview = exports.buildDev = exports.build = exports.chooseBuildPackages = exports.BuildMode = void 0;
|
|
72
|
+
exports.buildPreview = exports.buildProd = exports.buildDev = exports.build = exports.chooseBuildPackages = exports.BuildMode = void 0;
|
|
73
73
|
// @ts-ignore
|
|
74
74
|
var node_js_1 = require("@zeppos/zpm/lib/node.js");
|
|
75
|
-
var os_1 = __importDefault(require("os"));
|
|
76
75
|
var fs_1 = __importDefault(require("fs"));
|
|
76
|
+
var rd = __importStar(require("rd"));
|
|
77
77
|
var path = __importStar(require("path"));
|
|
78
78
|
var lodash_1 = __importDefault(require("lodash"));
|
|
79
79
|
var axios_1 = __importDefault(require("axios"));
|
|
80
80
|
var url_1 = require("url");
|
|
81
81
|
var fs_extra_1 = __importDefault(require("fs-extra"));
|
|
82
|
-
var path_1 = require("path");
|
|
83
82
|
var form_data_1 = __importDefault(require("form-data"));
|
|
84
83
|
var qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
|
|
85
84
|
var inquirer_1 = __importDefault(require("inquirer"));
|
|
86
85
|
var login_1 = require("./login");
|
|
87
|
-
var md5_1 = require("../utils/md5");
|
|
88
86
|
var logger = __importStar(require("../utils/logger"));
|
|
87
|
+
var storage_1 = require("./storage");
|
|
88
|
+
var project_1 = require("../config/project");
|
|
89
89
|
var STUDIO_URL = 'https://studio.huami.com';
|
|
90
90
|
var BuildMode;
|
|
91
91
|
(function (BuildMode) {
|
|
@@ -99,7 +99,7 @@ function chooseBuildPackages() {
|
|
|
99
99
|
return __generator(this, function (_a) {
|
|
100
100
|
switch (_a.label) {
|
|
101
101
|
case 0:
|
|
102
|
-
appJson = fs_extra_1["default"].readJSONSync(
|
|
102
|
+
appJson = fs_extra_1["default"].readJSONSync(path.resolve('./app.json'));
|
|
103
103
|
return [4 /*yield*/, inquirer_1["default"].prompt([
|
|
104
104
|
{
|
|
105
105
|
name: 'target',
|
|
@@ -120,19 +120,11 @@ var build = function (mode, packages) {
|
|
|
120
120
|
if (mode === void 0) { mode = BuildMode.PROD; }
|
|
121
121
|
if (packages === void 0) { packages = []; }
|
|
122
122
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
123
|
-
var
|
|
123
|
+
var workspace, choosedPackages, buildOptions, buildInfo_1, DistDir_1, error_1;
|
|
124
124
|
return __generator(this, function (_a) {
|
|
125
125
|
switch (_a.label) {
|
|
126
126
|
case 0:
|
|
127
|
-
|
|
128
|
-
try {
|
|
129
|
-
buildTempDir = path.join(os_1["default"].tmpdir(), "zepp-" + (0, md5_1.md5)(path.resolve('./')));
|
|
130
|
-
fs_extra_1["default"].copySync('./', buildTempDir);
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
logger.error('failed to copy project to temp dir');
|
|
134
|
-
logger.log(err);
|
|
135
|
-
}
|
|
127
|
+
workspace = path.resolve('./');
|
|
136
128
|
if (!(mode === BuildMode.PROD)) return [3 /*break*/, 1];
|
|
137
129
|
packages.length = 0;
|
|
138
130
|
return [3 /*break*/, 3];
|
|
@@ -149,7 +141,7 @@ var build = function (mode, packages) {
|
|
|
149
141
|
_a.label = 3;
|
|
150
142
|
case 3:
|
|
151
143
|
buildOptions = {
|
|
152
|
-
path:
|
|
144
|
+
path: workspace,
|
|
153
145
|
targets: packages,
|
|
154
146
|
buildMode: mode,
|
|
155
147
|
jsc: '' // 不开启 js => c
|
|
@@ -157,16 +149,32 @@ var build = function (mode, packages) {
|
|
|
157
149
|
if (mode === BuildMode.PROD || mode === BuildMode.PREVIEW) {
|
|
158
150
|
buildOptions.png2vg = true;
|
|
159
151
|
}
|
|
160
|
-
|
|
152
|
+
_a.label = 4;
|
|
161
153
|
case 4:
|
|
162
|
-
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
154
|
+
_a.trys.push([4, 9, , 10]);
|
|
155
|
+
if (!(mode === BuildMode.DEV)) return [3 /*break*/, 6];
|
|
156
|
+
return [4 /*yield*/, (0, node_js_1.startWithoutDist)(buildOptions)];
|
|
157
|
+
case 5:
|
|
158
|
+
_a.sent();
|
|
159
|
+
return [2 /*return*/, (0, node_js_1.getZpkBuf)(packages[0])];
|
|
160
|
+
case 6: return [4 /*yield*/, (0, node_js_1.start)(buildOptions)];
|
|
161
|
+
case 7:
|
|
162
|
+
buildInfo_1 = _a.sent();
|
|
163
|
+
if (buildInfo_1) {
|
|
164
|
+
DistDir_1 = path.join(workspace, 'dist');
|
|
165
|
+
rd.eachFileSync(DistDir_1, function (file) {
|
|
166
|
+
if (file !== path.join(DistDir_1, buildInfo_1)) {
|
|
167
|
+
fs_extra_1["default"].removeSync(file);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
168
170
|
}
|
|
169
|
-
return [2 /*return*/,
|
|
171
|
+
return [2 /*return*/, buildInfo_1];
|
|
172
|
+
case 8: return [3 /*break*/, 10];
|
|
173
|
+
case 9:
|
|
174
|
+
error_1 = _a.sent();
|
|
175
|
+
logger.error(error_1);
|
|
176
|
+
return [3 /*break*/, 10];
|
|
177
|
+
case 10: return [2 /*return*/];
|
|
170
178
|
}
|
|
171
179
|
});
|
|
172
180
|
});
|
|
@@ -176,11 +184,29 @@ var buildDev = function (packages) {
|
|
|
176
184
|
return (0, exports.build)(BuildMode.DEV, packages);
|
|
177
185
|
};
|
|
178
186
|
exports.buildDev = buildDev;
|
|
187
|
+
var buildProd = function (packages) {
|
|
188
|
+
return (0, exports.build)(BuildMode.PROD, packages);
|
|
189
|
+
};
|
|
190
|
+
exports.buildProd = buildProd;
|
|
191
|
+
var checkIsWatchFaceProject = function () {
|
|
192
|
+
var appJsonPath = path.resolve('./app.json');
|
|
193
|
+
var appJsonContent = fs_extra_1["default"].readJsonSync(appJsonPath);
|
|
194
|
+
var appType = lodash_1["default"].get(appJsonContent, 'app.appType');
|
|
195
|
+
return appType === project_1.AppType.WATCHFACE;
|
|
196
|
+
};
|
|
179
197
|
var buildPreview = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
180
|
-
var userToken, form, buildInfo;
|
|
198
|
+
var storage, isWatchFaceProject, userToken, form, buildInfo;
|
|
181
199
|
return __generator(this, function (_a) {
|
|
182
200
|
switch (_a.label) {
|
|
183
|
-
case 0:
|
|
201
|
+
case 0:
|
|
202
|
+
storage = new storage_1.Storage({ cmd: lodash_1["default"].get(args, '$0') });
|
|
203
|
+
isWatchFaceProject = checkIsWatchFaceProject();
|
|
204
|
+
// TODO: preview 支持打包表盘
|
|
205
|
+
if (isWatchFaceProject) {
|
|
206
|
+
logger.info('coming soon');
|
|
207
|
+
return [2 /*return*/];
|
|
208
|
+
}
|
|
209
|
+
return [4 /*yield*/, (0, login_1.login)(args)];
|
|
184
210
|
case 1:
|
|
185
211
|
userToken = _a.sent();
|
|
186
212
|
form = new form_data_1["default"]();
|
package/modules/config.js
CHANGED
|
@@ -64,7 +64,7 @@ var chalk_1 = __importDefault(require("chalk"));
|
|
|
64
64
|
var storage_1 = require("./storage");
|
|
65
65
|
var logger = __importStar(require("../utils/logger"));
|
|
66
66
|
var config = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
67
|
-
var cmd, _a, space, _b, method, values, allowedMethods, storage, config_1;
|
|
67
|
+
var cmd, _a, space, _b, method, values, allowedMethods, storage, commonHandleNotKeyTips, config_1;
|
|
68
68
|
return __generator(this, function (_c) {
|
|
69
69
|
cmd = lodash_1["default"].get(args, '$0');
|
|
70
70
|
_a = lodash_1["default"].get(args, '_', []), space = _a[0], _b = _a[1], method = _b === void 0 ? '' : _b, values = _a.slice(2);
|
|
@@ -79,26 +79,69 @@ var config = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
79
79
|
process.exit(1);
|
|
80
80
|
}
|
|
81
81
|
storage = new storage_1.Storage({ cmd: lodash_1["default"].get(args, '$0') });
|
|
82
|
+
commonHandleNotKeyTips = function (method) {
|
|
83
|
+
logger.error("Please enter the data in the format: " + chalk_1["default"].yellow("zeus config " + method + " <key>"));
|
|
84
|
+
};
|
|
82
85
|
switch (method) {
|
|
83
|
-
case 'set':
|
|
86
|
+
case 'set': {
|
|
87
|
+
if (!values.length) {
|
|
88
|
+
logger.error("Please enter the data in the format: " + chalk_1["default"].yellow('zeus config set <key>=<value>'));
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
84
91
|
values.forEach(function (info) {
|
|
85
|
-
var _a = info.split('='),
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
var _a = info.split('='), _b = _a[0], key = _b === void 0 ? '' : _b, _c = _a[1], value = _c === void 0 ? '' : _c;
|
|
93
|
+
key = key.trim();
|
|
94
|
+
value = value.trim();
|
|
95
|
+
if (!info.includes('=')) {
|
|
96
|
+
logger.error('Please enter the data in the format <key>=<value>');
|
|
97
|
+
}
|
|
98
|
+
else if (value === '') {
|
|
99
|
+
logger.error('please input <value>');
|
|
100
|
+
}
|
|
101
|
+
else if (key === '') {
|
|
102
|
+
logger.error('please input <key>');
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
storage.set(key, value);
|
|
106
|
+
logger.success("config: " + key + "=" + value);
|
|
107
|
+
}
|
|
88
108
|
});
|
|
89
109
|
break;
|
|
90
|
-
|
|
110
|
+
}
|
|
111
|
+
case 'get': {
|
|
112
|
+
if (!values.length) {
|
|
113
|
+
commonHandleNotKeyTips('get');
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
91
116
|
values.forEach(function (key) {
|
|
92
|
-
|
|
117
|
+
var curKey = key.trim();
|
|
118
|
+
if (!storage.has(key) || !key) {
|
|
119
|
+
logger.error('The <key> does not exist');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
logger.log(curKey + "=" + storage.get(curKey));
|
|
123
|
+
}
|
|
93
124
|
});
|
|
94
125
|
break;
|
|
95
|
-
|
|
126
|
+
}
|
|
127
|
+
case 'delete': {
|
|
128
|
+
if (!values.length) {
|
|
129
|
+
commonHandleNotKeyTips('delete');
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
96
132
|
values.forEach(function (key) {
|
|
97
|
-
|
|
98
|
-
|
|
133
|
+
var curKey = key.trim();
|
|
134
|
+
if (!storage.has(key) || !key) {
|
|
135
|
+
logger.error('The <key> does not exist');
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
storage["delete"](curKey);
|
|
139
|
+
logger.success("config: " + curKey + " deleted");
|
|
140
|
+
}
|
|
99
141
|
});
|
|
100
142
|
break;
|
|
101
|
-
|
|
143
|
+
}
|
|
144
|
+
case 'list': {
|
|
102
145
|
config_1 = storage.getAll();
|
|
103
146
|
Object.keys(config_1).forEach(function (key) {
|
|
104
147
|
if (lodash_1["default"].startsWith(key, '____')) {
|
|
@@ -114,6 +157,7 @@ var config = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
114
157
|
});
|
|
115
158
|
}
|
|
116
159
|
break;
|
|
160
|
+
}
|
|
117
161
|
default:
|
|
118
162
|
break;
|
|
119
163
|
}
|
package/modules/create/index.js
CHANGED
|
@@ -97,7 +97,7 @@ var sleep_1 = require("../../utils/sleep");
|
|
|
97
97
|
var yeoman_environment_1 = __importDefault(require("yeoman-environment"));
|
|
98
98
|
var TEMPLATE_DIR = (0, path_1.resolve)(__dirname, '../../public/template');
|
|
99
99
|
var create = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
100
|
-
var _a, cmd, projectName, cwdPath, workDir, beforeFiles, localTemplates, localChoices, env, generagtorMate, generagtorMateKeys, answer,
|
|
100
|
+
var _a, cmd, projectName, cwdPath, workDir, beforeFiles, localTemplates, localChoices, watchfaceTemplateChoices, appTemplateChoices, env, generagtorMate, generagtorMateKeys, answer, choosePkg;
|
|
101
101
|
return __generator(this, function (_b) {
|
|
102
102
|
switch (_b.label) {
|
|
103
103
|
case 0:
|
|
@@ -125,6 +125,8 @@ var create = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
125
125
|
}
|
|
126
126
|
localTemplates = (0, fs_1.readdirSync)(TEMPLATE_DIR);
|
|
127
127
|
localChoices = [];
|
|
128
|
+
watchfaceTemplateChoices = [];
|
|
129
|
+
appTemplateChoices = [];
|
|
128
130
|
if (!lodash_1["default"].isEmpty(localTemplates)) {
|
|
129
131
|
localTemplates.forEach(function (dirName) {
|
|
130
132
|
var dirPath = TEMPLATE_DIR + "/" + dirName;
|
|
@@ -139,8 +141,20 @@ var create = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
139
141
|
localChoices.unshift(Object.assign(chooseItem, {
|
|
140
142
|
copyType: project_1.TemplateCopyType.EDIT
|
|
141
143
|
}));
|
|
144
|
+
watchfaceTemplateChoices.unshift(Object.assign(chooseItem, {
|
|
145
|
+
copyType: project_1.TemplateCopyType.EDIT
|
|
146
|
+
}));
|
|
147
|
+
appTemplateChoices.unshift(Object.assign(chooseItem, {
|
|
148
|
+
copyType: project_1.TemplateCopyType.EDIT
|
|
149
|
+
}));
|
|
142
150
|
}
|
|
143
151
|
else {
|
|
152
|
+
if (dirName === 'hello-world') {
|
|
153
|
+
appTemplateChoices.push(chooseItem);
|
|
154
|
+
}
|
|
155
|
+
if (dirName === 'timer') {
|
|
156
|
+
watchfaceTemplateChoices.push(chooseItem);
|
|
157
|
+
}
|
|
144
158
|
localChoices.push(chooseItem);
|
|
145
159
|
}
|
|
146
160
|
}
|
|
@@ -161,34 +175,58 @@ var create = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
161
175
|
name: name,
|
|
162
176
|
type: project_1.AppSourceType.YEOMAN
|
|
163
177
|
});
|
|
178
|
+
appTemplateChoices.push({
|
|
179
|
+
name: name,
|
|
180
|
+
type: project_1.AppSourceType.YEOMAN
|
|
181
|
+
});
|
|
182
|
+
watchfaceTemplateChoices.push({
|
|
183
|
+
name: name,
|
|
184
|
+
type: project_1.AppSourceType.YEOMAN
|
|
185
|
+
});
|
|
164
186
|
}
|
|
165
187
|
});
|
|
166
188
|
}
|
|
167
189
|
localChoices.map(function (val, index) {
|
|
168
190
|
val.value = index;
|
|
169
191
|
});
|
|
192
|
+
appTemplateChoices.map(function (val, index) {
|
|
193
|
+
val.value = index;
|
|
194
|
+
});
|
|
195
|
+
watchfaceTemplateChoices.map(function (val, index) {
|
|
196
|
+
val.value = index;
|
|
197
|
+
});
|
|
170
198
|
return [4 /*yield*/, inquirer_1["default"].prompt([
|
|
199
|
+
{
|
|
200
|
+
name: 'appType',
|
|
201
|
+
type: 'list',
|
|
202
|
+
message: 'What type of application do you want to create?',
|
|
203
|
+
choices: Object.keys(project_1.AppType)
|
|
204
|
+
},
|
|
171
205
|
{
|
|
172
206
|
name: 'template',
|
|
173
207
|
type: 'list',
|
|
208
|
+
when: function (args) { return args.appType.toLowerCase() === project_1.AppType.APP; },
|
|
174
209
|
message: 'Which template do you want to use?',
|
|
175
210
|
choices: __spreadArray([
|
|
176
211
|
new inquirer_1["default"].Separator(),
|
|
177
212
|
new inquirer_1["default"].Separator('Choose a template')
|
|
178
|
-
],
|
|
213
|
+
], appTemplateChoices, true)
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: 'template',
|
|
217
|
+
type: 'list',
|
|
218
|
+
when: function (args) { return args.appType.toLowerCase() === project_1.AppType.WATCHFACE; },
|
|
219
|
+
message: 'Which template do you want to use?',
|
|
220
|
+
choices: __spreadArray([
|
|
221
|
+
new inquirer_1["default"].Separator(),
|
|
222
|
+
new inquirer_1["default"].Separator('Choose a template')
|
|
223
|
+
], watchfaceTemplateChoices, true)
|
|
179
224
|
},
|
|
180
|
-
// {
|
|
181
|
-
// name: 'appType',
|
|
182
|
-
// type: 'list',
|
|
183
|
-
// when: (args) => args.template === 0,
|
|
184
|
-
// message: 'What type of application should be created?',
|
|
185
|
-
// choices: Object.keys(AppType)
|
|
186
|
-
// },
|
|
187
225
|
{
|
|
188
226
|
name: 'withAppSide',
|
|
189
227
|
type: 'confirm',
|
|
190
228
|
// when: (args) => !!args.appType,
|
|
191
|
-
when: function (args) { return args.template === 0; },
|
|
229
|
+
when: function (args) { return args.template === 0 && args.appType.toLowerCase() === project_1.AppType.APP; },
|
|
192
230
|
message: 'Should this application contain a app-side component?'
|
|
193
231
|
},
|
|
194
232
|
{
|
|
@@ -204,7 +242,8 @@ var create = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
204
242
|
when: function (args) { return args.template === 0; },
|
|
205
243
|
choices: Object.keys(device_1.deviceTargets).map(function (platform) { return ({
|
|
206
244
|
name: device_1.deviceTargets[platform].deviceName,
|
|
207
|
-
value: platform
|
|
245
|
+
value: platform,
|
|
246
|
+
checked: platform === Object.keys(device_1.deviceTargets)[0]
|
|
208
247
|
}); }),
|
|
209
248
|
"default": Object.keys(device_1.deviceTargets)[0],
|
|
210
249
|
message: 'Which platforms of this application should be built?'
|
|
@@ -214,18 +253,18 @@ var create = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
214
253
|
answer = _b.sent();
|
|
215
254
|
answer.appType = answer.appType || project_1.AppType.APP;
|
|
216
255
|
answer.workDir = workDir;
|
|
217
|
-
|
|
256
|
+
choosePkg = answer.appType.toLowerCase() === project_1.AppType.APP ? appTemplateChoices[answer.template] : watchfaceTemplateChoices[answer.template];
|
|
218
257
|
logger.info('fetching template...');
|
|
219
258
|
return [4 /*yield*/, (0, sleep_1.sleep)(100)];
|
|
220
259
|
case 2:
|
|
221
260
|
_b.sent();
|
|
222
|
-
if (
|
|
223
|
-
logger.info(lodash_1["default"].upperFirst(cmd) + " application using yeoman template \"" +
|
|
224
|
-
(0, yeoman_app_1.createYeomanApp)(__assign(__assign({}, answer), { env: env, templateInfo: generagtorMate[
|
|
261
|
+
if (choosePkg.type === project_1.AppSourceType.YEOMAN) {
|
|
262
|
+
logger.info(lodash_1["default"].upperFirst(cmd) + " application using yeoman template \"" + choosePkg.name + "\".");
|
|
263
|
+
(0, yeoman_app_1.createYeomanApp)(__assign(__assign({}, answer), { env: env, templateInfo: generagtorMate[choosePkg.name] }));
|
|
225
264
|
}
|
|
226
265
|
else {
|
|
227
|
-
logger.info(lodash_1["default"].upperFirst(cmd) + " application using local template \"" +
|
|
228
|
-
(0, local_app_1.createLocalApp)(__assign(__assign({}, answer), { templateInfo:
|
|
266
|
+
logger.info(lodash_1["default"].upperFirst(cmd) + " application using local template \"" + choosePkg.name + "\".");
|
|
267
|
+
(0, local_app_1.createLocalApp)(__assign(__assign({}, answer), { templateInfo: choosePkg }));
|
|
229
268
|
}
|
|
230
269
|
logger.log('\n');
|
|
231
270
|
return [4 /*yield*/, (0, sleep_1.sleep)(50)];
|
|
@@ -246,7 +285,7 @@ var create = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
246
285
|
}
|
|
247
286
|
});
|
|
248
287
|
logger.log('\n');
|
|
249
|
-
logger.success("project created successfully by \"" +
|
|
288
|
+
logger.success("project created successfully by \"" + choosePkg.name + "\" template.\n");
|
|
250
289
|
return [4 /*yield*/, (0, sleep_1.sleep)(300)];
|
|
251
290
|
case 4:
|
|
252
291
|
_b.sent();
|
|
@@ -57,18 +57,42 @@ var path_1 = require("path");
|
|
|
57
57
|
var fs_extra_1 = __importDefault(require("fs-extra"));
|
|
58
58
|
var project_1 = require("../../config/project");
|
|
59
59
|
var device_1 = require("../../config/device");
|
|
60
|
+
// 生成模板项目
|
|
60
61
|
var createLocalApp = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
61
|
-
var workDir, templateInfo, withAppSide, withSettings, buildTargets, appJsonPath, appJson, defaultTarget, targets, defaultAssetsPath_1;
|
|
62
|
+
var workDir, templateInfo, withAppSide, withSettings, buildTargets, appType, appJsonPath, appJson, appID, defaultTarget, targets, defaultWatchFaceConfig, defaultAssetsPath_1;
|
|
62
63
|
return __generator(this, function (_a) {
|
|
63
|
-
workDir = args.workDir, templateInfo = args.templateInfo, withAppSide = args.withAppSide, withSettings = args.withSettings, buildTargets = args.buildTargets;
|
|
64
|
+
workDir = args.workDir, templateInfo = args.templateInfo, withAppSide = args.withAppSide, withSettings = args.withSettings, buildTargets = args.buildTargets, appType = args.appType;
|
|
64
65
|
fs_extra_1["default"].copySync(templateInfo.path, workDir);
|
|
66
|
+
appJsonPath = (0, path_1.resolve)(workDir, './app.json');
|
|
67
|
+
appJson = fs_extra_1["default"].readJsonSync(appJsonPath);
|
|
68
|
+
appID = Math.floor(Math.random() * 10001) + 20000;
|
|
69
|
+
lodash_1["default"].set(appJson, 'app.appId', appID);
|
|
65
70
|
if (templateInfo.copyType !== project_1.TemplateCopyType.EDIT) {
|
|
71
|
+
fs_extra_1["default"].writeJson(appJsonPath, appJson, {
|
|
72
|
+
spaces: 2,
|
|
73
|
+
EOL: os_1["default"].EOL
|
|
74
|
+
});
|
|
66
75
|
return [2 /*return*/];
|
|
67
76
|
}
|
|
68
|
-
appJsonPath = (0, path_1.resolve)(workDir, './app.json');
|
|
69
|
-
appJson = fs_extra_1["default"].readJsonSync(appJsonPath);
|
|
70
77
|
defaultTarget = lodash_1["default"].get(appJson, 'targets.default');
|
|
71
78
|
targets = {};
|
|
79
|
+
if (appType.toLowerCase() === project_1.AppType.WATCHFACE) {
|
|
80
|
+
defaultWatchFaceConfig = {
|
|
81
|
+
"path": "watchface/index",
|
|
82
|
+
"main": 1,
|
|
83
|
+
"editable": 0,
|
|
84
|
+
"lockscreen": 0,
|
|
85
|
+
"photoscreen": 0
|
|
86
|
+
};
|
|
87
|
+
lodash_1["default"].set(appJson, 'app.appType', project_1.AppType.WATCHFACE);
|
|
88
|
+
lodash_1["default"].set(appJson, 'app.description', 'empty watchface');
|
|
89
|
+
lodash_1["default"].unset(defaultTarget, 'module.page');
|
|
90
|
+
lodash_1["default"].set(defaultTarget, 'module.watchface', defaultWatchFaceConfig);
|
|
91
|
+
fs_extra_1["default"].remove((0, path_1.resolve)(workDir, './pages'));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
fs_extra_1["default"].remove((0, path_1.resolve)(workDir, './watchface'));
|
|
95
|
+
}
|
|
72
96
|
if (!withAppSide) {
|
|
73
97
|
lodash_1["default"].unset(defaultTarget, 'module.app-side');
|
|
74
98
|
fs_extra_1["default"].remove((0, path_1.resolve)(workDir, './app-side'));
|
package/modules/help.js
CHANGED
|
@@ -73,6 +73,7 @@ var help = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
|
73
73
|
logger.log(cmd + " init init a new project in current directory");
|
|
74
74
|
logger.log(cmd + " create <foo> add the <foo> project to current directory");
|
|
75
75
|
logger.log(cmd + " login login to your account");
|
|
76
|
+
logger.log(cmd + " logout Sign out of your account");
|
|
76
77
|
logger.log(cmd + " dev run this project in development mode");
|
|
77
78
|
logger.log(cmd + " preview preview this project in your device");
|
|
78
79
|
logger.log(cmd + " build build this project for production");
|
package/modules/login.js
CHANGED
|
@@ -58,14 +58,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
58
58
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
59
59
|
};
|
|
60
60
|
exports.__esModule = true;
|
|
61
|
-
exports.login = void 0;
|
|
61
|
+
exports.logout = exports.login = void 0;
|
|
62
62
|
var qs_1 = __importDefault(require("qs"));
|
|
63
|
-
var url_1 = require("url");
|
|
64
63
|
var lodash_1 = __importDefault(require("lodash"));
|
|
65
64
|
var axios_1 = __importDefault(require("axios"));
|
|
66
65
|
var inquirer_1 = __importDefault(require("inquirer"));
|
|
67
66
|
var storage_1 = require("./storage");
|
|
68
67
|
var logger = __importStar(require("../utils/logger"));
|
|
68
|
+
var project_1 = require("../config/project");
|
|
69
|
+
var open = require('open');
|
|
70
|
+
var http = require('http');
|
|
71
|
+
var url = require('url');
|
|
72
|
+
var querystring = require('querystring');
|
|
69
73
|
var REGIST_URL = 'https://api-user.huami.com';
|
|
70
74
|
var LOGIN_URL = 'https://account.huami.com';
|
|
71
75
|
var postForm = function (url, data) {
|
|
@@ -118,23 +122,20 @@ var loginByLocal = function (account, password) { return __awaiter(void 0, void
|
|
|
118
122
|
});
|
|
119
123
|
}); };
|
|
120
124
|
var login = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
121
|
-
var
|
|
125
|
+
var storage, accountInfo, historyToken, isLocal, answer, loginInfo, token_1, token;
|
|
122
126
|
return __generator(this, function (_a) {
|
|
123
127
|
switch (_a.label) {
|
|
124
128
|
case 0:
|
|
125
|
-
loginUrl = new url_1.URL(LOGIN_URL);
|
|
126
129
|
storage = new storage_1.Storage({ cmd: lodash_1["default"].get(args, '$0') });
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if (historyToken) {
|
|
134
|
-
logger.success("have logged in with account: " + accountInfo);
|
|
135
|
-
return [2 /*return*/, historyToken];
|
|
136
|
-
}
|
|
130
|
+
accountInfo = storage.get(project_1.loginStorageKey.account);
|
|
131
|
+
historyToken = storage.get(project_1.loginStorageKey.accountToken);
|
|
132
|
+
if (!lodash_1["default"].get(args, 'relogin') && historyToken) {
|
|
133
|
+
// logger.success(`have logged in with account: ${accountInfo}`)
|
|
134
|
+
logger.success("Has logged");
|
|
135
|
+
return [2 /*return*/, historyToken];
|
|
137
136
|
}
|
|
137
|
+
isLocal = false;
|
|
138
|
+
if (!isLocal) return [3 /*break*/, 3];
|
|
138
139
|
return [4 /*yield*/, inquirer_1["default"].prompt([
|
|
139
140
|
{
|
|
140
141
|
name: 'account',
|
|
@@ -157,14 +158,57 @@ var login = function (args) { return __awaiter(void 0, void 0, void 0, function
|
|
|
157
158
|
})];
|
|
158
159
|
case 2:
|
|
159
160
|
loginInfo = _a.sent();
|
|
160
|
-
|
|
161
|
-
if (
|
|
161
|
+
token_1 = lodash_1["default"].get(loginInfo, 'token_info.app_token');
|
|
162
|
+
if (token_1) {
|
|
162
163
|
logger.success("logged in with account: " + answer.account);
|
|
163
|
-
storage.set(
|
|
164
|
-
storage.set(
|
|
164
|
+
storage.set(project_1.loginStorageKey.account, answer.account);
|
|
165
|
+
storage.set(project_1.loginStorageKey.accountToken, token_1);
|
|
165
166
|
}
|
|
167
|
+
_a.label = 3;
|
|
168
|
+
case 3: return [4 /*yield*/, new Promise(function (resolve) { return __awaiter(void 0, void 0, void 0, function () {
|
|
169
|
+
var server;
|
|
170
|
+
return __generator(this, function (_a) {
|
|
171
|
+
switch (_a.label) {
|
|
172
|
+
case 0:
|
|
173
|
+
server = http.createServer(function (req, res) {
|
|
174
|
+
var arg = url.parse(req.url).query;
|
|
175
|
+
var params = querystring.parse(arg);
|
|
176
|
+
var appToken = params['apptoken'];
|
|
177
|
+
res.statusCode = 200;
|
|
178
|
+
res.setHeader('Content-Type', 'text/plain');
|
|
179
|
+
res.end('Login is successful, please return to the operation interface manually');
|
|
180
|
+
if (appToken) {
|
|
181
|
+
resolve(appToken);
|
|
182
|
+
storage.set(project_1.loginStorageKey.accountToken, appToken);
|
|
183
|
+
logger.success('logger success');
|
|
184
|
+
server.close();
|
|
185
|
+
// 在执行 preview 命令需要登录时不退出程序
|
|
186
|
+
if (!args) {
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
server.listen(project_1.LocalServerConfig.PORT, project_1.LocalServerConfig.HOSTNAME);
|
|
192
|
+
// 打开浏览器的登录页面
|
|
193
|
+
return [4 /*yield*/, open(project_1.loginConfig.LOGIN_URL + "?project_name=" + project_1.loginConfig.PROJECT_NAME + "&platform_app=" + project_1.loginConfig.PLATFORM_APP + "&project_redirect_uri=" + project_1.loginConfig.PROJECT_REDIRECT_URI)];
|
|
194
|
+
case 1:
|
|
195
|
+
// 打开浏览器的登录页面
|
|
196
|
+
_a.sent();
|
|
197
|
+
return [2 /*return*/];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}); })];
|
|
201
|
+
case 4:
|
|
202
|
+
token = _a.sent();
|
|
166
203
|
return [2 /*return*/, token];
|
|
167
204
|
}
|
|
168
205
|
});
|
|
169
206
|
}); };
|
|
170
207
|
exports.login = login;
|
|
208
|
+
var logout = function () {
|
|
209
|
+
var storage = new storage_1.Storage({ cmd: '' });
|
|
210
|
+
storage["delete"](project_1.loginStorageKey.accountToken);
|
|
211
|
+
storage["delete"](project_1.loginStorageKey.account);
|
|
212
|
+
logger.success('Logged out');
|
|
213
|
+
};
|
|
214
|
+
exports.logout = logout;
|