@zeppos/zeus-cli 1.0.8 → 1.0.22

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.
Files changed (78) hide show
  1. package/bin/cli.js +3 -0
  2. package/config/project.js +25 -1
  3. package/modules/build.js +117 -49
  4. package/modules/config.js +61 -17
  5. package/modules/create/index.js +61 -22
  6. package/modules/create/local-app.js +30 -6
  7. package/modules/help.js +10 -9
  8. package/modules/login.js +74 -24
  9. package/modules/run.js +40 -34
  10. package/modules/storage.js +2 -2
  11. package/package.json +3 -2
  12. package/public/template/empty/app.js +1 -1
  13. package/public/template/empty/app.json +1 -8
  14. package/public/template/empty/watchface/index.js +13 -0
  15. package/public/template/hello-world/app.js +1 -1
  16. package/public/template/hello-world/page/i18n/en-US.po +3 -0
  17. package/public/template/timer/app.js +10 -0
  18. package/public/template/timer/app.json +50 -0
  19. package/public/template/timer/assets/gtr-3-pro/images/bg/bg.png +0 -0
  20. package/public/template/timer/assets/gtr-3-pro/images/bigNum/0.png +0 -0
  21. package/public/template/timer/assets/gtr-3-pro/images/bigNum/1.png +0 -0
  22. package/public/template/timer/assets/gtr-3-pro/images/bigNum/2.png +0 -0
  23. package/public/template/timer/assets/gtr-3-pro/images/bigNum/3.png +0 -0
  24. package/public/template/timer/assets/gtr-3-pro/images/bigNum/4.png +0 -0
  25. package/public/template/timer/assets/gtr-3-pro/images/bigNum/5.png +0 -0
  26. package/public/template/timer/assets/gtr-3-pro/images/bigNum/6.png +0 -0
  27. package/public/template/timer/assets/gtr-3-pro/images/bigNum/7.png +0 -0
  28. package/public/template/timer/assets/gtr-3-pro/images/bigNum/8.png +0 -0
  29. package/public/template/timer/assets/gtr-3-pro/images/bigNum/9.png +0 -0
  30. package/public/template/timer/assets/gtr-3-pro/images/bigNum/sp.png +0 -0
  31. package/public/template/timer/assets/gtr-3-pro/images/btn/back.png +0 -0
  32. package/public/template/timer/assets/gtr-3-pro/images/btn/lv.png +0 -0
  33. package/public/template/timer/assets/gtr-3-pro/images/btn/red.png +0 -0
  34. package/public/template/timer/assets/gtr-3-pro/images/point/bg.png +0 -0
  35. package/public/template/timer/assets/gtr-3-pro/images/point/bottom.png +0 -0
  36. package/public/template/timer/assets/gtr-3-pro/images/point/center.png +0 -0
  37. package/public/template/timer/assets/gtr-3-pro/images/point/h.png +0 -0
  38. package/public/template/timer/assets/gtr-3-pro/images/point/left.png +0 -0
  39. package/public/template/timer/assets/gtr-3-pro/images/point/m.png +0 -0
  40. package/public/template/timer/assets/gtr-3-pro/images/point/right.png +0 -0
  41. package/public/template/timer/assets/gtr-3-pro/images/point/s.png +0 -0
  42. package/public/template/timer/assets/gtr-3-pro/images/preview.png +0 -0
  43. package/public/template/timer/assets/gtr-3-pro/images/second/second.png +0 -0
  44. package/public/template/timer/assets/gtr-3-pro/images/smallNum/0.png +0 -0
  45. package/public/template/timer/assets/gtr-3-pro/images/smallNum/1.png +0 -0
  46. package/public/template/timer/assets/gtr-3-pro/images/smallNum/2.png +0 -0
  47. package/public/template/timer/assets/gtr-3-pro/images/smallNum/3.png +0 -0
  48. package/public/template/timer/assets/gtr-3-pro/images/smallNum/4.png +0 -0
  49. package/public/template/timer/assets/gtr-3-pro/images/smallNum/5.png +0 -0
  50. package/public/template/timer/assets/gtr-3-pro/images/smallNum/6.png +0 -0
  51. package/public/template/timer/assets/gtr-3-pro/images/smallNum/7.png +0 -0
  52. package/public/template/timer/assets/gtr-3-pro/images/smallNum/8.png +0 -0
  53. package/public/template/timer/assets/gtr-3-pro/images/smallNum/9.png +0 -0
  54. package/public/template/timer/assets/gtr-3-pro/images/smallNum/d.png +0 -0
  55. package/public/template/timer/assets/gtr-3-pro/images/smallNum/n.png +0 -0
  56. package/public/template/timer/assets/gtr-3-pro/images/week_ch/1.png +0 -0
  57. package/public/template/timer/assets/gtr-3-pro/images/week_ch/2.png +0 -0
  58. package/public/template/timer/assets/gtr-3-pro/images/week_ch/3.png +0 -0
  59. package/public/template/timer/assets/gtr-3-pro/images/week_ch/4.png +0 -0
  60. package/public/template/timer/assets/gtr-3-pro/images/week_ch/5.png +0 -0
  61. package/public/template/timer/assets/gtr-3-pro/images/week_ch/6.png +0 -0
  62. package/public/template/timer/assets/gtr-3-pro/images/week_ch/7.png +0 -0
  63. package/public/template/timer/assets/gtr-3-pro/images/week_en/1.png +0 -0
  64. package/public/template/timer/assets/gtr-3-pro/images/week_en/2.png +0 -0
  65. package/public/template/timer/assets/gtr-3-pro/images/week_en/3.png +0 -0
  66. package/public/template/timer/assets/gtr-3-pro/images/week_en/4.png +0 -0
  67. package/public/template/timer/assets/gtr-3-pro/images/week_en/5.png +0 -0
  68. package/public/template/timer/assets/gtr-3-pro/images/week_en/6.png +0 -0
  69. package/public/template/timer/assets/gtr-3-pro/images/week_en/7.png +0 -0
  70. package/public/template/timer/shared/buffer.js +11 -0
  71. package/public/template/timer/shared/device-polyfill.js +3 -0
  72. package/public/template/timer/shared/global.js +17 -0
  73. package/public/template/timer/shared/js-module.js +27 -0
  74. package/public/template/timer/shared/logger.js +21 -0
  75. package/public/template/timer/shared/setTimeout.js +59 -0
  76. package/public/template/timer/watchface/gtr-3-pro/index.js +1 -0
  77. package/public/template/timer/watchface/round/index.js +438 -0
  78. package/public/template/hello-world/i18n/en-US.po +0 -2
package/bin/cli.js CHANGED
@@ -19,9 +19,12 @@ 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)
27
+ // @ts-ignore
25
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)
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,23 @@ 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 = "____".concat(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://".concat(LocalServerConfig.HOSTNAME, ":").concat(LocalServerConfig.PORT, "/"))
36
+ };
37
+ exports.loginStorageKey = {
38
+ accountToken: "".concat(accountPrefix, "token"),
39
+ account: "".concat(accountPrefix, "account"),
40
+ userid: "".concat(accountPrefix, "userid"),
41
+ cname: "".concat(accountPrefix, "cname")
42
+ };
package/modules/build.js CHANGED
@@ -77,38 +77,84 @@ 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
- var url_1 = require("url");
81
80
  var fs_extra_1 = __importDefault(require("fs-extra"));
82
81
  var form_data_1 = __importDefault(require("form-data"));
83
82
  var qrcode_terminal_1 = __importDefault(require("qrcode-terminal"));
84
83
  var inquirer_1 = __importDefault(require("inquirer"));
85
84
  var login_1 = require("./login");
86
85
  var logger = __importStar(require("../utils/logger"));
87
- var STUDIO_URL = 'https://studio.huami.com';
86
+ var storage_1 = require("./storage");
87
+ var project_1 = require("../config/project");
88
+ var chalk_1 = __importDefault(require("chalk"));
88
89
  var BuildMode;
89
90
  (function (BuildMode) {
90
91
  BuildMode["DEV"] = "development";
91
92
  BuildMode["PREVIEW"] = "preview";
92
93
  BuildMode["PROD"] = "production";
93
94
  })(BuildMode = exports.BuildMode || (exports.BuildMode = {}));
94
- function chooseBuildPackages() {
95
+ var TransformType;
96
+ (function (TransformType) {
97
+ TransformType["Default"] = "";
98
+ TransformType["Js"] = "js";
99
+ TransformType["C"] = "c";
100
+ TransformType["Bin"] = "bin";
101
+ })(TransformType || (TransformType = {}));
102
+ function handleExecCommandInErrorDir(mode) {
103
+ var curCommand = 'dev';
104
+ if (mode === BuildMode.PROD) {
105
+ curCommand = 'build';
106
+ }
107
+ else if (mode === BuildMode.PREVIEW) {
108
+ curCommand = 'preview';
109
+ }
110
+ logger.warn("The command ".concat(chalk_1["default"].yellow("zeus ".concat(curCommand)), " needs to be executed in the root of the project"));
111
+ process.exit(1);
112
+ }
113
+ function chooseBuildPackages(mode) {
95
114
  return __awaiter(this, void 0, void 0, function () {
96
- var appJson, answers;
115
+ var appJson, targets, answers;
97
116
  return __generator(this, function (_a) {
98
117
  switch (_a.label) {
99
118
  case 0:
100
- appJson = fs_extra_1["default"].readJSONSync(path.resolve('./app.json'));
101
- return [4 /*yield*/, inquirer_1["default"].prompt([
102
- {
103
- name: 'target',
104
- type: 'list',
105
- message: 'Which target would you like to build?',
106
- choices: Object.keys(lodash_1["default"].get(appJson, 'targets', {}))
107
- }
108
- ])];
119
+ if (!mode) {
120
+ mode = 'development';
121
+ }
122
+ appJson = fs_extra_1["default"].readJSONSync(path.resolve('./app.json'), { throws: false });
123
+ if (!appJson) {
124
+ handleExecCommandInErrorDir(mode);
125
+ }
126
+ targets = Object.keys(lodash_1["default"].get(appJson, 'targets', {}));
127
+ if (!!targets.length) return [3 /*break*/, 1];
128
+ logger.error('please set at least one package');
129
+ process.exit(1);
130
+ return [3 /*break*/, 4];
109
131
  case 1:
132
+ if (!(targets.length === 1)) return [3 /*break*/, 2];
133
+ return [2 /*return*/, [targets[0]]];
134
+ case 2: return [4 /*yield*/, inquirer_1["default"].prompt([
135
+ {
136
+ name: 'target',
137
+ type: 'list',
138
+ when: function () { return mode !== BuildMode.PROD; },
139
+ message: 'Which target would you like to build?',
140
+ choices: targets
141
+ },
142
+ {
143
+ name: 'buildTargets',
144
+ type: 'checkbox',
145
+ when: function () { return mode === BuildMode.PROD; },
146
+ choices: targets.map(function (item) { return ({
147
+ name: item,
148
+ value: item,
149
+ checked: true
150
+ }); }),
151
+ message: 'Which targets would you like to build?'
152
+ }
153
+ ])];
154
+ case 3:
110
155
  answers = _a.sent();
111
- return [2 /*return*/, [answers.target]];
156
+ return [2 /*return*/, mode !== BuildMode.PROD ? [answers.target] : answers.buildTargets];
157
+ case 4: return [2 /*return*/];
112
158
  }
113
159
  });
114
160
  });
@@ -118,47 +164,59 @@ var build = function (mode, packages) {
118
164
  if (mode === void 0) { mode = BuildMode.PROD; }
119
165
  if (packages === void 0) { packages = []; }
120
166
  return __awaiter(void 0, void 0, void 0, function () {
121
- var workspace, choosedPackages, buildOptions, buildInfo, DistDir_1;
167
+ var workspace, choosePackages, buildOptions, buildInfo_1, DistDir_1, error_1;
122
168
  return __generator(this, function (_a) {
123
169
  switch (_a.label) {
124
170
  case 0:
125
171
  workspace = path.resolve('./');
126
- if (!(mode === BuildMode.PROD)) return [3 /*break*/, 1];
127
- packages.length = 0;
128
- return [3 /*break*/, 3];
172
+ if (!!packages.length) return [3 /*break*/, 2];
173
+ return [4 /*yield*/, chooseBuildPackages(mode)];
129
174
  case 1:
130
- if (!!packages.length) return [3 /*break*/, 3];
131
- return [4 /*yield*/, chooseBuildPackages()];
132
- case 2:
133
- choosedPackages = _a.sent();
134
- if (!choosedPackages || !choosedPackages.length) {
175
+ choosePackages = _a.sent();
176
+ if (!choosePackages || !choosePackages.length) {
135
177
  logger.error('please choose at least one package');
136
178
  return [2 /*return*/];
137
179
  }
138
- packages.push.apply(packages, choosedPackages);
139
- _a.label = 3;
140
- case 3:
180
+ packages.push.apply(packages, choosePackages);
181
+ _a.label = 2;
182
+ case 2:
141
183
  buildOptions = {
142
184
  path: workspace,
143
185
  targets: packages,
144
186
  buildMode: mode,
145
- jsc: '' // 不开启 js => c
187
+ jsc: TransformType.Default // 不开启 js => c
146
188
  };
147
189
  if (mode === BuildMode.PROD || mode === BuildMode.PREVIEW) {
148
- buildOptions.png2vg = true;
190
+ Object.assign(buildOptions, {
191
+ png2vg: true
192
+ });
149
193
  }
150
- return [4 /*yield*/, (0, node_js_1.start)(buildOptions)];
194
+ _a.label = 3;
195
+ case 3:
196
+ _a.trys.push([3, 8, , 9]);
197
+ if (!(mode === BuildMode.DEV)) return [3 /*break*/, 5];
198
+ return [4 /*yield*/, (0, node_js_1.startWithoutDist)(buildOptions)];
151
199
  case 4:
152
- buildInfo = _a.sent();
153
- if (buildInfo) {
200
+ _a.sent();
201
+ return [2 /*return*/, (0, node_js_1.getZpkBuf)(packages[0])];
202
+ case 5: return [4 /*yield*/, (0, node_js_1.start)(buildOptions)];
203
+ case 6:
204
+ buildInfo_1 = _a.sent();
205
+ if (buildInfo_1) {
154
206
  DistDir_1 = path.join(workspace, 'dist');
155
207
  rd.eachFileSync(DistDir_1, function (file) {
156
- if (file !== path.join(DistDir_1, buildInfo)) {
208
+ if (file !== path.join(DistDir_1, buildInfo_1)) {
157
209
  fs_extra_1["default"].removeSync(file);
158
210
  }
159
211
  });
160
212
  }
161
- return [2 /*return*/, buildInfo];
213
+ return [2 /*return*/, buildInfo_1];
214
+ case 7: return [3 /*break*/, 9];
215
+ case 8:
216
+ error_1 = _a.sent();
217
+ logger.error(error_1);
218
+ return [3 /*break*/, 9];
219
+ case 9: return [2 /*return*/];
162
220
  }
163
221
  });
164
222
  });
@@ -168,26 +226,36 @@ var buildDev = function (packages) {
168
226
  return (0, exports.build)(BuildMode.DEV, packages);
169
227
  };
170
228
  exports.buildDev = buildDev;
171
- var buildProd = function (packages) {
172
- return (0, exports.build)(BuildMode.PROD, packages);
229
+ var buildProd = function () {
230
+ return (0, exports.build)(BuildMode.PROD, []);
173
231
  };
174
232
  exports.buildProd = buildProd;
233
+ var checkIsWatchFaceProject = function () {
234
+ var appJsonPath = path.resolve('./app.json');
235
+ var appJsonContent = fs_extra_1["default"].readJsonSync(appJsonPath);
236
+ var appType = lodash_1["default"].get(appJsonContent, 'app.appType');
237
+ return appType === project_1.AppType.WATCHFACE;
238
+ };
175
239
  var buildPreview = function (args) { return __awaiter(void 0, void 0, void 0, function () {
176
- var userToken, form, buildInfo;
177
- return __generator(this, function (_a) {
178
- switch (_a.label) {
179
- case 0: return [4 /*yield*/, (0, login_1.login)(args)];
240
+ var storage, _a, apptoken, userid, cname, form, buildInfo, isWatchFaceProject;
241
+ return __generator(this, function (_b) {
242
+ switch (_b.label) {
243
+ case 0:
244
+ storage = new storage_1.Storage({ cmd: lodash_1["default"].get(args, '$0') });
245
+ return [4 /*yield*/, (0, login_1.login)(args)];
180
246
  case 1:
181
- userToken = _a.sent();
247
+ _a = _b.sent(), apptoken = _a.apptoken, userid = _a.userid, cname = _a.cname;
182
248
  form = new form_data_1["default"]();
183
249
  logger.info('building preview...');
184
250
  return [4 /*yield*/, (0, exports.build)(BuildMode.PREVIEW)];
185
251
  case 2:
186
- buildInfo = _a.sent();
252
+ buildInfo = _b.sent();
253
+ isWatchFaceProject = checkIsWatchFaceProject();
187
254
  logger.info('getting preview package...');
188
- form.append('uploadFile', fs_1["default"].createReadStream("./dist/" + buildInfo));
255
+ form.append('file', fs_1["default"].createReadStream("./dist/".concat(buildInfo)));
256
+ form.append('app_type', isWatchFaceProject ? '1' : '2');
189
257
  form.getLength(function (err, length) { return __awaiter(void 0, void 0, void 0, function () {
190
- var previewInfo, _a, prtcl, path, studioUrl;
258
+ var host, previewInfo, _a, protocol, code;
191
259
  return __generator(this, function (_b) {
192
260
  switch (_b.label) {
193
261
  case 0:
@@ -196,15 +264,15 @@ var buildPreview = function (args) { return __awaiter(void 0, void 0, void 0, fu
196
264
  return [2 /*return*/];
197
265
  }
198
266
  logger.info('generating preview qrcode...');
199
- return [4 /*yield*/, axios_1["default"].post(STUDIO_URL + "/upload/package/preview", form, {
200
- headers: __assign(__assign({}, form.getHeaders()), { 'content-length': "" + length, apptoken: userToken })
267
+ host = cname.split(',').filter(function (h) { return h.indexOf('api-mifit') > -1; })[0];
268
+ return [4 /*yield*/, axios_1["default"].post("https://".concat(host, "/custom/tools/app-dial/upload?userid=").concat(userid), form, {
269
+ headers: __assign(__assign({}, form.getHeaders()), { 'content-length': "".concat(length), apptoken: apptoken })
201
270
  })];
202
271
  case 1:
203
272
  previewInfo = _b.sent();
204
- _a = lodash_1["default"].get(previewInfo, 'data.data', {}), prtcl = _a.prtcl, path = _a.path;
205
- if (prtcl && path) {
206
- studioUrl = new url_1.URL(STUDIO_URL);
207
- qrcode_terminal_1["default"].generate(prtcl + "://" + studioUrl.host + path, { small: true });
273
+ _a = lodash_1["default"].get(previewInfo, 'data', {}), protocol = _a.protocol, code = _a.code;
274
+ if (protocol && code) {
275
+ qrcode_terminal_1["default"].generate("".concat(protocol, "://").concat(host, "/custom/tools/app-dial/download/").concat(code), { small: true });
208
276
  logger.success('please use Zepp APP to scan the qrcode below to preview your app.');
209
277
  }
210
278
  else {
package/modules/config.js CHANGED
@@ -64,41 +64,84 @@ 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);
71
71
  allowedMethods = ['get', 'set', 'delete', 'list'];
72
72
  if (!lodash_1["default"].includes(allowedMethods, method)) {
73
- logger.error("invalid method: " + method);
73
+ logger.error("invalid method: ".concat(method));
74
74
  logger.log(chalk_1["default"].yellow('try to use one of the following:'));
75
- logger.log("- " + cmd + " " + space + " set <key>=<value> [<key>=<value> ...]");
76
- logger.log("- " + cmd + " " + space + " get <key> [<key> ...]");
77
- logger.log("- " + cmd + " " + space + " delete <key> [<key> ...]");
78
- logger.log("- " + cmd + " " + space + " list [--json]");
75
+ logger.log("- ".concat(cmd, " ").concat(space, " set <key>=<value> [<key>=<value> ...]"));
76
+ logger.log("- ".concat(cmd, " ").concat(space, " get <key> [<key> ...]"));
77
+ logger.log("- ".concat(cmd, " ").concat(space, " delete <key> [<key> ...]"));
78
+ logger.log("- ".concat(cmd, " ").concat(space, " list [--json]"));
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: ".concat(chalk_1["default"].yellow("zeus config ".concat(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: ".concat(chalk_1["default"].yellow('zeus config set <key>=<value>')));
89
+ break;
90
+ }
84
91
  values.forEach(function (info) {
85
- var _a = info.split('='), key = _a[0], value = _a[1];
86
- storage.set(key, value);
87
- logger.info("config: " + key + "=" + value);
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: ".concat(key, "=").concat(value));
107
+ }
88
108
  });
89
109
  break;
90
- case 'get':
110
+ }
111
+ case 'get': {
112
+ if (!values.length) {
113
+ commonHandleNotKeyTips('get');
114
+ break;
115
+ }
91
116
  values.forEach(function (key) {
92
- logger.log(key + "=" + storage.get(key));
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("".concat(curKey, "=").concat(storage.get(curKey)));
123
+ }
93
124
  });
94
125
  break;
95
- case 'delete':
126
+ }
127
+ case 'delete': {
128
+ if (!values.length) {
129
+ commonHandleNotKeyTips('delete');
130
+ break;
131
+ }
96
132
  values.forEach(function (key) {
97
- storage["delete"](key);
98
- logger.info("config: " + key + " deleted");
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: ".concat(curKey, " deleted"));
140
+ }
99
141
  });
100
142
  break;
101
- case 'list':
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, '____')) {
@@ -110,10 +153,11 @@ var config = function (args) { return __awaiter(void 0, void 0, void 0, function
110
153
  }
111
154
  else {
112
155
  Object.keys(config_1).forEach(function (key) {
113
- logger.log(key + "=" + config_1[key]);
156
+ logger.log("".concat(key, "=").concat(config_1[key]));
114
157
  });
115
158
  }
116
159
  break;
160
+ }
117
161
  default:
118
162
  break;
119
163
  }
@@ -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, choosedPkg;
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:
@@ -108,7 +108,7 @@ var create = function (args) { return __awaiter(void 0, void 0, void 0, function
108
108
  if (projectName) {
109
109
  workDir = (0, path_1.resolve)(cwdPath, projectName);
110
110
  if (fs.existsSync(workDir)) {
111
- logger.error("\"" + workDir + "/\" already exists.");
111
+ logger.error("\"".concat(workDir, "/\" already exists."));
112
112
  process.exit(1);
113
113
  }
114
114
  }
@@ -125,9 +125,11 @@ 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
- var dirPath = TEMPLATE_DIR + "/" + dirName;
132
+ var dirPath = "".concat(TEMPLATE_DIR, "/").concat(dirName);
131
133
  var dirStat = (0, fs_1.lstatSync)(dirPath);
132
134
  if (dirStat.isDirectory()) {
133
135
  var chooseItem = {
@@ -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
- ], localChoices, true)
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
- choosedPkg = localChoices[answer.template];
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 (choosedPkg.type === project_1.AppSourceType.YEOMAN) {
223
- logger.info(lodash_1["default"].upperFirst(cmd) + " application using yeoman template \"" + choosedPkg.name + "\".");
224
- (0, yeoman_app_1.createYeomanApp)(__assign(__assign({}, answer), { env: env, templateInfo: generagtorMate[choosedPkg.name] }));
261
+ if (choosePkg.type === project_1.AppSourceType.YEOMAN) {
262
+ logger.info("".concat(lodash_1["default"].upperFirst(cmd), " application using yeoman template \"").concat(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 \"" + choosedPkg.name + "\".");
228
- (0, local_app_1.createLocalApp)(__assign(__assign({}, answer), { templateInfo: localChoices[answer.template] }));
266
+ logger.info("".concat(lodash_1["default"].upperFirst(cmd), " application using local template \"").concat(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)];
@@ -238,15 +277,15 @@ var create = function (args) { return __awaiter(void 0, void 0, void 0, function
238
277
  else {
239
278
  var shortFile = file.replace(cwdPath, '');
240
279
  if (beforeFiles.includes(file)) {
241
- logger.log(chalk_1["default"].yellow(" " + chalk_1["default"].bold('replace') + " "), shortFile);
280
+ logger.log(chalk_1["default"].yellow(" ".concat(chalk_1["default"].bold('replace'), " ")), shortFile);
242
281
  }
243
282
  else {
244
- logger.log(chalk_1["default"].green(" " + chalk_1["default"].bold('create') + " "), shortFile);
283
+ logger.log(chalk_1["default"].green(" ".concat(chalk_1["default"].bold('create'), " ")), shortFile);
245
284
  }
246
285
  }
247
286
  });
248
287
  logger.log('\n');
249
- logger.success("project created successfully by \"" + choosedPkg.name + "\" template.\n");
288
+ logger.success("project created successfully by \"".concat(choosePkg.name, "\" template.\n"));
250
289
  return [4 /*yield*/, (0, sleep_1.sleep)(300)];
251
290
  case 4:
252
291
  _b.sent();